Spring Security 5 버전에서 6 버전으로 바뀌면서 변경된 내용중 SecurityContextHolder 에 관한 내용이 있어
공부하게 되었다.
SecurityContext
사용자 인증 정보를 저장하고 있는 Authentication 객체를 저장하는 보관소이다.
SecurityContextHolder 전략(Strategy)에 따라 SecurityContext 에 저장하는 방식이 다르며
일반적으로 ThreadLocal 에 저장한다.
Authentication 인증 객체를 한 쓰레드에서 공유하므로 언제든지 불러와 사용할 수 있다.
SecurityContextHolder
SecurityContext 를 관리하고 저장하는 객체이다.
SecurityContext 저장을 위해 ThreadLocal 를 가지고 있다.
SecurityContext 저장 방식(Strategy, 전략)을 지정한다.
- MODE_TRHEADLOCAL : 한 쓰레드에 한개의 SecurityContext 를 할당한다. 기본값이다.
- MODE_INHERITABLETRHEADLOCAL : 메인, 자식 쓰레드에서 동일한 SecurityContext 사용
- MODEL_GLOBAL : 한 어플리케이션에서 한개의 SecurityContext 사용한다.
SecurityContextHolder 의 clearContext() 메서드를 통해 SecurityContext 를 초기화한다.
stragtegy 는 SecurityContextHolderStragegy 인터페이스이며, 기본적으로
ThreadLocalSecurityContextHolderStrategy 클래스를 사용한다.