문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.
___스프링부트(OAuth2 Client 라이브러리 사용), ID 1103799
안녕하세요, 프로젝트에 카카오 로그인 연동 중 궁금한 점이 생겨 문의드립니다.
현재 계획중인 플로우는
프론트에서 카카오서버로 인가코드 요청 → 카카오서버는 인가코드를 백엔드 주소로 리다이렉트 → 백엔드는 인가코드 받아서 엑세스 토큰 요청, 사용자 정보 가져오기 등을 수행하는 것이었습니다.
이때 백엔드에서는 스프링시큐리티와 OAuth2 Client 라이브러리를 사용해 인가코드를 받는것부터 구현하려고 했는데요,
막상 연동을 해보니 해당 라이브러리를 사용하려면 무조건 인가코드 요청부터 백엔드에서 수행해야 하는게 아닌가 싶은 의문이 들기 시작했습니다. (프론트엔드에서 카카오서버로 인가코드 요청시 state 파라미터를 활용해야 해서 백엔드에서는 인가코드 받기부터 구현하려고 합니다)
백엔드에서만 테스트할때는 사용자 정보를 잘 가져왔는데,
프론트엔드와 연동 테스트를 진행하니 authorization_request_not_found 에러가 나는 것을 확인했고
해당 에러가 나는 이유는 인가코드를 요청하는 과정을 프론트엔드가 OAuth2 CLient를 대신해서 수행하는 과정에서
필요한 몇몇 객체가 null이 되는 것이 아닌가 하는 생각으로 이어졌습니다…
이 생각을 검증하려고 여러 레퍼런스를 찾고있는데 아직 문제를 해결하지 못해서 이렇게 문의글을 남깁니다…!
혹시 알고 계시는 것이 있다면 알려주시면 많은 도움이 될 거 같습니다
(2) front에서 전달한 구분 값을 backend 세션에 이나 캐시 서버 등에 보관하셨다가 OAuth2 Client 로그인 수행 후 활용하시면 좋을 것 같습니다.
위 답변은 OAuth2 Client 라이브러리를 사용해 백엔드에서 인가서버로 인가코드 요청부터 전부 수행하고,
프론트엔드에서http://localhost:8080/oauth2/authorization/kakao URL로 백엔드에 로그인 API 요청을 보낼때 구분값도 함께 request params 등에 전달하라는 말씀이신걸까요?
그리고 해당 구분값을 캐시서버에 보관했다가 추후 로그인 수행이 끝나면 활용해서 쓰면 된다고 이해하면 될까요?