-
[스프링 시큐리티] 필터 초기화와 다중 보안 설정강의노트/스프링 시큐리티 2020. 9. 14. 12:38
다중 설정 클래스
- 설정 클래스 별로 보안 기능이 각각 작동한다.
- 설정 클래스 별로 RequestMatcher를 설정한다.
- 설정 클래스 별로 필터가 생성된다.
- 다중 설정 클래스를 설정 할 경우 @Order 어노테이션을 통해서 어떤 보안 기능을 체크할지 설정해주어야 한다. (index 0부터 시작)
- Filter들과 RequestMatcher를 가진 SecurityFilterChain 객체가 각각의 보안 설정에 따라 생성되어진다.
- 각각의 생성된 SecurityFilterChain 객체들은 FilterChainProxy 빈에서 SecurityFilterChains 리스트 멤버 변수로 관리된다.
- 요청 처리 과정
- 요청이 들어오면 FilterChainProxy에서는 SecurityFilterChains 리스트에 있는 SecurityFilterChain 객체들의 RequestMatcher 멤버 변수를 통해서 매칭되는 SecurityFilterChain객체를 우선적으로 찾고,해당 객체에 저장된 Filter들을 가지고 와서 인증/인가 처리를 진행한다.
코드 분석
WebSecurity에서 설정 클래스 리스트를 담은 securityFilterChainBuilders를 가지고 FilterChainProxy 객체 생성 시 매개변수로 전달한다.
전달 된 filterChains에서 요청에 해당하는 SecurityFilterChain을 RequestMatcher를 통해서 찾고, 해당 SecurityFilterChain의 Filter 리스트를 통해서 인증/인가 작업을 진행한다.
'강의노트 > 스프링 시큐리티' 카테고리의 다른 글
[스프링 시큐리티] Authentication 객체 저장소(SecurityContext, SecurityContextHolder) (0) 2020.09.14 [스프링 시큐리티] 인증 정보 저장 객체(Authentication) (0) 2020.09.14 [스프링 시큐리티] DelegatingFilterProxy & FilterChainProxy (0) 2020.09.13 [스프링 시큐리티] CsrfFilter (0) 2020.09.12 [스프링 시큐리티] ExceptionTranslationFilter (0) 2020.09.12 - 설정 클래스 별로 보안 기능이 각각 작동한다.