웹서비스와 모바일앱에서 카카오 로그인 SDK를 적용하려고 하는데요.
모바일앱에서는 callback uri 없이 SDK를 이용하여 SDK 내부 API를 통하여 사용자의 정보를 얻어올 수가 있습니다.
웹서비스에서는 callback uri 를 통하여 서버에서 code와 access token을 획득한 뒤 사용자의 정보를 얻어올 수가 있는데요.
프론트가 SPA로 구성(API 서버와 분리)되어 있음
웹서비스 카카오 로그인을 위해
웹페이지에서 카카오 로그인 버튼 선택 ->
API 서버에서 callback uri로 redirect ->
API 서버에서 callback uri에 해당하는 핸들러에서 code와 access token 을 획득한 뒤 사용자의 정보를 얻고 DB에 등록한 뒤 웹서비스의 특정 url로 redirect할 때 querystring에 JWT을 넣음
[Mobile]
|
| SDK를 통하여 사용자의 카카오 정보(이메일 등)를 획득한 뒤
| 회원가입 API를 호출하고 JWT를 응답으로 받음
|
|-------------------> [API Server]
|
| 사용자를 카카오 로그인 페이지로 보낸뒤 로그인 성공시 API 서버의 callback uri로 redirect함.
| 서버에서 code와 accesstoken 획득 후 카카오 정보를 획득하고 웹페이지로 redirect함(query string에 jwt)
|
[Web]
위 사항들로 인하여 API 서버에서 웹서비스 OAuth2 로그인 하나때문에 callback uri를 처리할 endpoint가 생기는 점과
query string에 JWT가 들어가는 점 등 매끄럽지 못한 점이 생기는 거 같아서 다음과 같은 방법을 생각해보았습니다.
서비스 각각 SDK를 통하여 사용자의 정보를 획득한 뒤 API 서버에 회원가입 / 로그인 API를 호출하여 응답 payload에 JWT를 받는다.
모바일) SDK내부에서 자체적으로 회원정보를 얻은뒤 회원가입 / 로그인 API 콜을 하여 JWT를 받으면 됨.
웹) 카카오 로그인 과정은 API 서버의 개입이 전혀 없이 SPA 에 callback uri에 해당하는 endpoint (http://localhost:3000/oauth2/callback/kakao )를 할당한 뒤 카카오 로그인 자바스크립트 SDK를 통해
사용자의 정보를 획득하여 모바일과 마찬가지로 회원가입 / 로그인 API 콜을 하여 JWT를 받음
이렇게 하면 각 클라이언트가 SDK를 통하여 동일한 인증 프로세스를 거치고 서버에 API를 호출하여
응답을 받는 단순한 구조로 할 수 있게 되는데
callback uri를 API 서버측이 아닌 프론트 내에서 처리하여도 이슈가 없는건지 잘 모르겠습니다.
답변 감사드립니다.