image.png

SecurityFilterChain 내부에 존재하는 각각의 필터가 시큐리티 관련 작업을 진행한다.

모든 작업은 기능 단위로 분업하여 진행함으로 앞에서 한 작업을 뒤 필터가 알기 위한 저장소 개념이 필요하다.

예를들어. 인가 필터가 작업을 하려면 유저의 ROLE 정보가 필요한데, 앞단의 필터에서 유저에게 ROLE값을 부여한 결과를 인가 필터까지 공유해야 확인할 수 있다.

해당하는 정보는 Authentication이라는 객체에 담긴다.

Authentication 객체는 SecurityContext에 포함되어 관리되며 SecurityContext는 0개 이상 존재할 수 있다.

그리고 이 N개의 SecurityContext는 하나의 SecurityContextHolder에 의해서 관리된다.

SecurityContext는 자동으로 관리되므로 딱히 custom할 필요 없다.

https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html

SecurityContextHolder

SecurityContext

Authentication