gwichanlee.log
로그인
gwichanlee.log
로그인
SecurityContextPersistenceFilter
귀찮Lee
·
2022년 7월 26일
팔로우
0
spring security
0
Spring Security
목록 보기
4/13
◎ SecurityContextPersistenceFilter
SecurityContextPersistenceFilter
SecurityContext 객체를 영속화하는 역할을 수행하는 Filter
인증 처리 매커니즘 이전에 실행되어야 하기 때문에 Security Filter들 중에서도 앞부분에 실행되는 Filter
SecurityContextRepository 라는 SecurityContext 저장소 객체를 보유
해당 저장소 객체를 통해 SecurityContext를 영속화하고 기존에 저장된 SecurityContext 객체를 꺼내어 SecurityContextHolder에 저장하는 등의 역할을 수행
◎ SecurityContextPersistenceFilter 처리 순서
클라이언트의 요청이 발생
SecurityContextRepository 인터페이스의 loadContext() 메소드로 저장된 SecurityContext 객체를 가져옴
기본으로 사용되는 저장소: HttpSessionSecurityRepository
HttpSession에 SecurityContext를 저장
기존에 저장했던 SecurityContextHolder 의 clearContext() 로 SecurityContext를 제거
SecurityContextRepository 에 해당 SecurityContext 를 다시 저장
◎ SecurityContext
SecurityContext
SecurityContextHolder로 접근하는데 사용
Authentication 객체를 가지고 있다.
SecurityContextRepository
SecurityContext를 Persist하기 위한 구현체
일반적으로 사용되는 구현체 : HttpSessionSecurityContextRepository
◎ SecurityContext 객체의 생성, 저장, 조회
익명 사용자
새로운 SecurityContext 객체를 생성하여 SecurityContextHolder에 저장
AnonymouseAuthenticationFilter에서 AnonymousAuthenticationToken 객체를 SecurityContext에 저장
인증 시
새로운 SecurityContext 객체를 생성하여 SecurityContextHolder에 저장
UsernamePasswordAuthenticationFilter에서 인증 성공 후 UsernamePasswordAuthentication 객체를 SecurityContext에 저장
인증이 최종 완료되면 Session 에 SecurityContext를 저장
인증 후
Session에서 SecurityContext 꺼내어 SecurityContextHolder에서 저장
SecurityContext안에 Authentication 객체가 존재하면 계속 인증을 유지
최종 응답 시 공통
SecurityContextHolder안의 SecurityContext객체에서 보관하던 인증정보를 반드시 초기화 해야함
SecurityContextHolder.clearContext() 메서드를 호출해 인증 정보를 초기화
귀찮Lee
배운 것은 기록하자! / 오류 지적은 언제나 환영!
팔로우
이전 포스트
Spring Security 인증
다음 포스트
Spring Security 인가
0개의 댓글
댓글 작성