로컬에서는 제대로 작동이 되지만, 배포 환경에서 로그인 처리가 되지 않고 무한 리디렉션에 빠집니다

현재 EC2 서버 우분투환경에서 Kubernetes 환경을 구성하고 AWS 로드 밸런서를 통해 배포를 진행했는데, 무한 리디렉션 문제가 발생하고 있습니다.

확인해보니, https://k*****bot.shop/api/login/oauth2/code?code=*****&state=****** 요청 URL에서 Request Cookies에는 JSESSIONID가 포함되어 있지만, Response Cookies에는 포함되지 않은 것을 발견했습니다. 이 문제가 무한 리디렉션의 원인이 될 수 있을까요?

또한, 현재 Spring Security와 OAuth2를 사용하여 카카오 로그인을 구현하고 있으며, 세션 관리를 통해 인증을 처리하고 있습니다. 그런데 로드 밸런서를 사용하는 경우, 세션 저장소가 공유되지 않아서 세션 기반 인증이 제대로 동작하지 않을 수 있고, 대신 토큰 기반 인증을 사용하는 것이 바람직하다는 내용을 보았습니다. 이 부분이 사실인지, 그리고 어떻게 대응해야 할지 조언을 구하고 싶습니다.

(현재 카카오 디벨로퍼 계정은 다른 팀원 분이 관리하고 있어 앱 ID를 바로 확인하기 어려운 상황입니다. 답변에 앱 ID가 반드시 필요하다면, 팀원 분께 확인 후 빠르게 전달드리겠습니다.)

무한 리디렉션이 발생하면 크롬 네트워크 탭(호출된 URL)만 보시면 대략 원인을 추정할 수 있습니다.

일반적으로

카카오 로그인 이후, 개발하신 Redirect URI에 진입하고
로그인 처리 또는 로그인 실패 후 리디렉션한 페이지에 권한이 없어 다시 리디렉션 되는 상황에 그런 현상이 발생하기도합니다.

다만, 기재하신 내용으로는 어떤 상황인지 판단할 수 없고
무한 리디렉션을 왜 쿠키나 세션 문제와 연관있다고 생각하시는지 맥락을 알 수 없습니다.

그런데 로드 밸런서를 사용하는 경우, 세션 저장소가 공유되지 않아서 세션 기반 인증이 제대로 동작하지 않을 수 있고, 대신 토큰 기반 인증을 사용하는 것이 바람직하다는 내용을 보았습니다. 이 부분이 사실인지, 그리고 어떻게 대응해야 할지 조언을 구하고 싶습니다.

시스템 구축 역시, 운영하시는 시스템 상황에 따라 선택할 부분이지 바람직함의 사실여부를 판단해드릴 수는 없습니다.

세션클러스터링이나 레디스를 이용한 세션 서버분리로 로드 밸런서 환경에서 세션을 사용할 수도 있고
이기종 서버간 인증/인가를 위해 JWT기반 토큰을 사용할 수도 있으므로 상황에 맞게 선택하시면됩니다.


앱ID와 무한 리디렉션 상황에 크롬 네트워크 탭 캡쳐 부탁드려요.

앱ID : ID 1101656

리디렉션 상황에서의 네트워크 탭 상황입니다!

+) 무한 리디렉션을 쿠키나 세션 문제와 연관있다고 생각한 이유는 로컬환경과 비교했을 때, 로컬 환경에서는 https://localhost:8080/login/oauth2/code?code=*****&state=****** 요청 시, 요청 헤더와 응답 헤더 모두에 JSESSIONID가 포함되어 있었습니다. 하지만 배포 서버에서는 응답 헤더에 JSESSIONID가 포함되지 않아, 이 점이 원인일 수 있다고 생각했습니다.

첨부하신 네트워크 탭을 보면

리다이렉트 URI에서 로그인 요청 페이지로 리다이렉트 되므로

원인은 리다이렉트 페이지 자체에 있거나, 세션에 따른 접근제어 예외가 AWS환경에는 안되어 있을 것으로 보입니다.

/login/oauth2/code리다이렉트 URI 내부 로직에 로그 설정 해보시고 로그가 출력 안된다면

비로그인 접근 허용되어야할 리다이렉트 URI가 로그인 페이지로 라우팅되는 현상으로 관련 설정이나 코드 확인 해보시면 좋을 것 같습니다.