Spring Security - SecurityContext, SecurityContextHolder
2021. 4. 17. 15:08ㆍSPRING/SPRING SECURITY
SecurityContext
- Authentication 객체를 저장한다.
- TheadLocal에 저장되어 아무 곳에서나 참조 가능하다(Thread Safe)
- 예) Authentication authentication = SecurityContextHolder.getContext().getAuthentication()
- 인증이 완료된 후에는 HttpSession에 저장된다.
SecurityContextHolder
- SecurityContext를 관리한다.
- SecurityContext 저장 방식을 3가지로 나눠 관리한다.
- MODE_THREADLOCAL : 스레드당 SecurityContext 객체를 할당, 기본값
- MODE_INHERITABLETHREADLOCAL : 메인 스레드와 자식 스레드에 관하여 동일한 SecurityContext를 유지
- MODE_GLOBAL : 응용 프로그램에서 단 하나의 SecurityContext를 저장한다
- 요청당 하나의 스레드가 할당되어 하나의 SecurityContext를 참조할 수 있는게 기본이다.
- 하지만 경우에 따라, 한 요청에서 자식 스레드를 생성하고 자식 스레드에서 인증객체 접근이 필요한 경우 MODE_INHERITABLETHREADLOCAL로 변경하여 사용할 수 있다.
- MODE_GLOBAL은 잘 사용되지 않지만 단일 스레드로 요청을 받는 환경에서 사용될 수 있다.
'SPRING > SPRING SECURITY' 카테고리의 다른 글
Spring Security - 인증 플로우, AuthenticationManager, AuthenticationProvider (0) | 2021.04.17 |
---|---|
Spring Security - SecurityContextPersistenceFilter (0) | 2021.04.17 |
Spring Security - Authentication 구조 (0) | 2021.04.16 |
Spring Security - 다중 설정 클래스 (0) | 2021.04.16 |
Spring Security - Security 아키텍처, DelegatingFilterProxy, FilterChainProxy (0) | 2021.04.16 |