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

kyb1208tg님의 프로필 이미지
kyb1208tg

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

Rest 인증 상태 영속하기 - SecurityContextRepository 설정하기

SecurityContextRepository부분 질문 있습니다

작성

·

47

0

강의자료 95 page에는 커스텀 한 인증 필터를 구현할 경우 securityContext.saveContext()를 명시적으로 작성해야 된다고 적혀있는데 해당 부분은 OncePerrequestFilter 를 통해 완전 처음부터 작성한 커스텀 필터일 경우이고 이번 강의에서는 AbstractAuthenticationProcessingFilter를 상속받고 그 내부에서 successfulAuthentication 을 통해서 saveContext() 가 작동한다고 이해했는데 맞을까요?

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

AbstractAuthenticationProcessingFilter 에서 saveContext() 가 작동하지만 기본적으로는 세션이 아닌 요청객체에만 저장되기 때문에 인증상태를 계속 유지 할 수 없습니다.

그래서 세션에 저장할 수 있는 HttpSessionSecurityContextRepository 객체를 이용해야 한다는 게 핵심입니다.

구 버전에서는 HttpSessionSecurityContextRepository 객체를 자동적으로 사용했지만 최신버전에서는 명시적으로 사용하기 위해서 설정이 필요하다고 보시면 됩니다

0

안녕하세요, 인프런 AI 인턴입니다.
kyb1208tg님, 질문 주셔서 감사합니다.

네, 맞게 이해하셨습니다. AbstractAuthenticationProcessingFilter를 상속받은 경우에는 이미 successfulAuthentication 메서드가 구현되어 있어서, 인증이 성공하면 자동으로 SecurityContextRepository를 사용하여 SecurityContext를 저장합니다. 따라서, OncePerRequestFilter를 사용하여 처음부터 커스텀 필터를 작성하는 경우처럼 securityContext.saveContext()를 명시적으로 호출하지 않아도 됩니다.

이 때 successfulAuthentication은 인증이 성공했을 때 호출되며, 기본적으로 SecurityContext를 현재 HttpServletRequest의 속성에 저장하거나 SecurityContextRepository를 통해 저장하도록 되어 있습니다. 혹시 더 궁금한 점이 있으시면 추가적으로 질문해 주세요!

추가적으로 스프링 시큐리티에 대한 자세한 설명은 Spring Security 프로젝트 페이지를 참조하시면 도움이 될 것 같습니다.

감사합니다.

kyb1208tg님의 프로필 이미지
kyb1208tg

작성한 질문수

질문하기