인프런 커뮤니티 질문&답변

에욱님의 프로필 이미지
에욱

작성한 질문수

스프링 시큐리티 OAuth2

OAuth2 로그인 구현 - OpenID Connect 로그아웃

logoutHandler 질문입니다.

작성

·

40

0

  1. 로그아웃 api 설정에선 logoutSuccessHandler, invalidateHttpSession, clearAuthentication, deleteCookies 만 설정했는데 logoutFilter에 왜 인가서버에 로그아웃을 요청하는 logoutHandler가 있는건가요? OAuth2 라이브러리 의존성 추가하면 자동으로 추가되는건가요?

  2. 맞다면 logout api설정으로 먼저 클라이언트에서 세션, 쿠키, 인증 객체를 제거하고 이후 인가서버에서 해당 유저의 세션을 제거하는 logoutHandler가 호출돼서 인가서버에서 세션 삭제하고, 로그아웃 성공했으니 logoutSuccessHandler에서 설정한 RedirectUri로 이동하는건가요? 아니면 클라이언트에서 인증정보 제거후 logoutSuccessHandler에 설정한 객체가 호출돼고 이 Handler에서 인가서버에 세션제거하고 redirect하게 하는건가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 에욱님 질문에 대해 답변 드리겠습니다.

OAuth2와 관련된 로그아웃 과정에서의 작동 방식에 대해 궁금해하셨군요. Spring Security OAuth2를 사용할 때, 로그아웃 처리는 두 가지 주요 측면으로 나뉩니다: 클라이언트 측의 로그아웃과 인가 서버 측의 로그아웃입니다.

  1. 로그아웃 Handler 자동 추가 여부:
    OAuth2 라이브러리를 사용할 경우, 일반적으로 OAuth2 프로토콜에 따라 서버 간의 통신 및 처리를 용이하게 하기 위한 기본 설정들이 제공될 수 있습니다. 로그아웃 과정에서 클라이언트 애플리케이션 측의 세션, 쿠키 삭제와 인가 서버 측의 로그아웃 요청 중 어느 것이 수행될지 여부는 설정에 따라 다를 수 있으며, Spring Security 설정에 의해 제어됩니다.

  2. 로그아웃 과정의 순서:
    일반적으로 클라이언트 측에서 사용자의 세션 및 인증 정보를 제거하고, 이후 인가 서버에 로그아웃 요청을 보내어 서버 측 세션을 종료시키는 방식으로 작동합니다. 첫 번째 단계로 클라이언트 쪽에서 세션, 쿠키, 인증 객체를 무효화한 후, logoutSuccessHandler가 작동하여 인가 서버에 로그아웃 요청을 보낸 후에 리다이렉트가 발생할 수 있습니다.

보통 logoutSuccessHandler는 로그아웃 후의 최종 처리와 리다이렉트를 담당하며, 인가 서버로의 요청은 별도의 LogoutHandler에서 처리가 됩니다. 만약 인가 서버에 로그아웃 요청을 보내기 위한 특별한 설정(예: LogoutHandler)이 필요하다면, 이는 직접 구성해야 할 수도 있습니다.

이 과정은 프로젝트 요구사항과 설정에 따라 다를 수 있으므로, 환경에 맞는 적절한 설정을 적용하는 것이 중요합니다. 추가적으로 아래의 URL을 참고하여 문제 해결에 도움이 되길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

에욱님의 프로필 이미지
에욱

작성한 질문수

질문하기