SDK : kakao_js_sdk/2.7.1
디벨로퍼스 앱ID : 1055754
Vue + Springboot 3 + Spring Security 6
안녕하세요.
카카오 로그인 관련 문의드립니다.
인앱 Webview 에서 동작하는 앱을 개발하고 있습니다.
REST API 방식으로는 로그인에 성공했는데,
Webview 에서는 카카오톡으로 간편로그인이 안된다는 걸 알게돼서
JS SDK 를 사용하는 방식으로 변경을 진행 중입니다.
frontend SDK 호출 로직
var redirectUri = window.location.origin;
if (redirectUri.includes("localhost") || redirectUri.includes("192.168")) {
redirectUri = `http://${window.location.hostname}:8082`;
}
redirectUri += "/login/oauth2/code/kakao";
const state = Util.generateRandomStr(16);
Util.setCookie("state", state, 300);
Kakao.Auth.authorize({
redirectUri,
state,
});
위와 같이 frontend 에서 호출하면 backend 에 아래 요청이 들어오는데,
이후 에러로 진행이 안되고 있습니다.
backend 에 들어오는 요청
GET /login/oauth2/code/kakao?code=qYjhyfi498g7z_w0oKyZIxjMzXSr51P-CcfGRSYMo8aOYlF3rEoerZV2jDQKKcleAAABjpnbuEOoblpFv_zasg&state=lugzo9xl-3wnrhqs
backend 에서 발생하는 에러 로그
onAuthenticationFailure()
[authorization_request_not_found]
org.springframework.security.oauth2.core.OAuth2AuthenticationException: [authorization_request_not_found]
에러나는 곳을 살펴보면,
Spring Security 에서 OAuth2AuthorizationRequest 관련 처리를 못해서 발생하는데요,
REST API 방식에서는 kauth.kakao.com/oauth/authorize 요청을 backend 에서 하면서 이 때 session 에 OAuth2AuthorizationRequest 를 저장해놓기 때문에 정상동작 하는데,
JS SDK 를 사용하면 kauth.kakao.com/oauth/authorize 요청이 SDK 에 의해 브라우저에서 발생하면서 redirect uri 로 code 가 전달되는 시점에는 OAuth2AuthorizationRequest 처리가 안되는 것으로 이해하고 있습니다.
JS SDK 를 사용한다면 누구나 이 문제를 겪을텐데, 관련 질문이나 설명 글을 찾을 수가 없어서,
제가 뭔가 놓치고 있거나 이해를 잘못하고 있을거 같습니다… ^^;;
해결하기 위해 보통 어떻게 처리하면 되는지 문의드립니다.
그리고 webview 앱 환경에서 JS SDK 를 쓰면 카카오톡으로 간편 로그인이 되는건 맞는건지도 문의드립니다.
감사합니다.