iOS에서 OIDC를 사용한 카카오톡 소셜 로그인 흐름 관련 질문입니다

안녕하세요 ios 애플리케이션의 api 서버를 Java와 Spring Boot로 구축중입니다.

제가 구상 중인 방식이 일반적으로 많이 사용하는 방식인지 궁금합니다.

자체 로그인 기능은 존재하지 않고, 카카오톡으로 소셜 로그인만 구현 할 생각인데,
원래는 kakao oidc 인증을 서버 단에서 수행하였으나,
토큰이 노출될 수 있다는 이유로 ios 단에서 oidc 인증 수행 후 발급 받은 id token 내에 있는
사용자 정보만을 서버 단으로 보내 사용자의 최초 로그인 여부를 판단하려 합니다.

사용자의 최초 로그인일 경우, DB에 사용자 정보 저장 뒤 Spring Boot 서버 자체 access token과 refresh token을 발급해서
response body에 담아 보내려 합니다.
사용자가 이미 DB에 저장되어 있다면 마찬가지로 access token과 refresh token을 발급해서 response body에 보냅니다.

이런 식의 로그인 흐름이 ios 애플리케이션의 api 서버 개발 시에 일반적으로 사용되는 방법일까요 …?
아니면 더 좋은 방법이 있을까요 ?
감사합니다 !

안녕하세요.

kakao oidc 인증을 서버 단에서 수행하였으나, 토큰이 노출될 수 있다는 이유로

서버단에서 id token을 발급 받았다면 오히려 안전할 것 같은데요. 토큰이 노출될 수 있다 판단하신 이유를 조금더 구체적으로 알 수 있을까요?

사용자의 최초 로그인일 경우, DB에 사용자 정보 저장 뒤 Spring Boot 서버 자체 access token과 refresh token을 발급해서
response body에 담아 보내려 합니다.

자체 jwt 토큰 발행한다면 굳이 OIDC를 사용할 필요는 없을듯합니다.

이런 식의 로그인 흐름이 ios 애플리케이션의 api 서버 개발 시에 일반적으로 사용되는 방법일까요 …?

카카오와의 교신을 iOS 에 일임하고 일반회원가입하듯 사용자 정보 및 카카오 로그인 회원번호만 서버로 전달하여 처리하는 것은 일반적으로 많이 사용하는 방식입니다.

참고 부탁드려요.

아 제가 잘못 말씀드린 것 같습니다.
토큰이 노출될 수 있다고 판단한건 로그인 정상 처리 후 자체 발급한 jwt 토큰을 클라이언트 단으로 넘길 때 자체 발급한 access token과 refresh token이 노출될 수 있다는 뜻에서 작성한 부분입니다.

현재는 spring security를 사용하여 카카오 oidc를 처리하고 있는데,

https://devtalk.kakao.com/t/oauth-jwt/129058

이 글을 보고 ios 단에 카카오 oidc 과정은 위임하는게 나을 것 같다는 생각이 들어 현재 기존 spring security oidc 관련 코드는 걷어내고 있었습니다.

바뀐 로직은 ios 단에서 진행된 카카오 oidc 인증 과정을 거쳐 provider, provider_id, email 같은 정보를 추출해 서버 단으로 이 정보를 보낸 뒤, DB에 해당 정보로 가입된 사용자가 있는지를 판단한 후

  1. DB에 존재한다면: 자체 발급한 jwt access token, refresh token을 response body에 담아 전송
  2. DB에 존재하지 않는다면: DB에 저장 후 자체 발급한 jwt access token, refresh token을 response body에 담아 전송

이런 식으로 진행하려 했습니다.

이 말씀이 제가 위에 적은 내용과 동일한 것으로 이해하면 될까요 ?

  1. ios 단에서 카카오 oidc를 이용하여 사용자 정보 추출
  2. 서버 단으로 해당 정보만 전송
  3. 서버에서 DB 조회 후 저장 or 로그인 과정 수행

내용이 많이 길어져서 죄송합니다. 감사합니다 @tim.l !!

네, 말씀하신 방식과 추천 드린 방식 동일하며, 백엔드에 일임하고 client 에 필요한 정보만 내려주는 방식도 많이 사용합니다.

참고 부탁드려요~

1개의 좋아요

답변 감사합니다 !

1개의 좋아요