Local과 Http환경에선 잘 돌아가던 Kakao OAuth2가
로드밸런서를 통해 HTTPS로 빌드했더니 authorization_request_not_found 오류가 나타났다.
로드 밸런서 뒤에 여러 인스턴스를 배포할 때 세션이 공유되지 않기 때문에 오류가 발생한다고 나와있다. 로드밸런서를 사용한 https 빌드에서만 이러는 현상을 보아하니 세션과 관련된 오류인 것 같았다.
base-uri : 클라이언트에서 요청 시 카카오 로그인 화면으로 연결되는 주소
https://{{api-server}}/oauth2/authorization/kakao
- 지정된 scope와 auth code, state, redirect-url을 파라미터로 가진 로그인 화면 리다이렉트
redirect-url : 카카오 로그인 후 최종 인증까지 마쳤을 때 우리 서버로 돌아와야 하는 주소
https://{{api-server}}/login/oauth2/code/kakao
- Oauth2LoginAuthenticationFilter → 카카오에서의 콜백 결과가 성공이고 사용자 인증코드 (authorization code)도 포함하고 있다면 Spring Security는 access_token 에 대한 authroization code를 교환하고, customOAuth2UserService 를 호출한다 (Security Config에 정의함)
a. success-redirect-url : 카카오 서버로부터 받아온 인증 정보로 JWT 토큰을 발급한 뒤, 발급에 성공했으면 OAuth2AuthenticationSuccessHandler 로 이동
https://{{api-server}}/oauth2/redirect?accessToken={{accessToken}}&refreshToken={{refreshToken}}
b. fail-redirect-url : 발급에 실패했으면 'error' query param에 에러 내용을인코딩해 담아서 OAuth2AuthenticationFailureHandler로 이동
https://{{api-server}}/oauth2/redirect?error={{encodedErrorMessage}}
- 로드밸런서 > 대상그룹 > 속성 편집 > 고정 켜기
- 해당 설정을 줌으로써, 모든 요청에 대해 로드밸런서 생성 쿠키에 매칭되는 세션으로 보내줄 수 있음