-
[스프링 시큐리티] SecurityContext 객체 생성, 저장, 조회(SecurityContextPersistenceFilter)강의노트/스프링 시큐리티 2020. 9. 14. 20:11
SecurityContextPersistenceFilter SecurityContextPersistenceFilter
- SecurityContext 객체를 생성, 저장, 조회한다.
- Filter 리스트 중 2번째 위치한다.
- 인증 성공 후 Session에 저장하는 역활을 한다.
- Save SecurityContext
HttpSecurityContextRepository
- 실질적으로 SecurityContext를 생성, 저장, 조회하는 클래스
SecurityContextPersistenceFilter 동작 시나리오
익명 사용자가 접근 할 경우
- 새로운 SecurityContext 객체를 생성하여 SecurityContextHolder에 저장한다.
- AnonymousAuthenticationFilter에서 AnonymousAuthenticationToken 객체를 SecurityContext에 저장한다.
인증 사용자가 접근 할 경우
- 새로운 SecurityContext 객체를 생성하여 SecurityContextHolder에 저장한다.
- UsernamePasswordAuthenticationFilter에서 인증 성공 후 UsernamePasswordAuthenticationToken 객체를 SecurityContext에 저장한다.
- 인증이 최종 완료되면 SecurityContextPersistenceFilter가 Session에 SecurityContext를 저장한다.
인증 된 사용자가 접근 할 경우
- Session에서 SecurityContext 객체를 꺼내서 SecurityContextHolder에 저장한다.
- SecurityContext 안에는 Authentication 객체가 존재하며 계속 인증을 유지한다.
최종 응답 시 공통 로직
- SecurityContextHolder.clearContext()를 통해서 SecurityContext를 삭제처리한다.
- why? 모든 경우에 SecurityContext 객체를 SecurityContextHolder에 저장하기 때문에
'강의노트 > 스프링 시큐리티' 카테고리의 다른 글
[스프링 스큐리티] 인증 여부 검증(AuthenticationManager) (0) 2020.09.14 [스프링 시큐리티] Authentication Flow (0) 2020.09.14 [스프링 시큐리티] Authentication 객체 저장소(SecurityContext, SecurityContextHolder) (0) 2020.09.14 [스프링 시큐리티] 인증 정보 저장 객체(Authentication) (0) 2020.09.14 [스프링 시큐리티] 필터 초기화와 다중 보안 설정 (0) 2020.09.14