본문 바로가기

Spring🍃/Spring Security🛡️

정수원의 Spring Security Oauth2 (1) : Spring Security 초기화 과정 이해

728x90

SecurityBuilder는 빌더 클래스로서 웹 보안을 구성하는 빈 객체와 설정 클래스를 생성하는 역할

- WebSecurity와 HttpSecurity가 있다

 

SecurityConfigurer는 Http 요청과 관련된 보안처리를 담당하는 필터들을 생성하고 여러 초기화 설정에 관여한다

SecurityBuilder는 SecurityConfigurer를 포함하고 있으며, 인증 및 인가 초기화 작업은 SecurityConfigurer에 의해 진행된다

 

자동 설정에 의해 빌더 클래스가 생성되고, 이후 설정 클래스가 생성된 후 init(B builder), configure(B builder)로 초기화 작업 진행

 

빌더는 HttpSecurity, WebSecurity를 초기화 진행한다. 초기화가 완료될때 SecuirtyFilterChain이 생성된다

 

CustomSecurityConfigurer 만들기

자동 설정 어플리케이션 초기화

1) SpringWebMvcImportSelector : WebMvcSecurityConfiguration

 

2) SecurityFilterAutoConfiguration : DelegatingFilterProxyRegistrationBean - DelegatingFilterProxy 등록(SpringFilterChain 이름의 빈 검색) ~ 클라이언트의 요청을 필터 체인에게 위임하는 역할

 

3) WebMvcSecurityConfiguration :

AuthenticationPrincipalArgumentResolver - @AuthenticatioPrincipal로 Principal 객체 바인딩

CurrentSecurityContextArgumentResolver

CsrfTokenArgumentResolver

 

4) HttpSecurityConfiguration : HttpSecurity 공통 설정 클래스와 필터들을 생성하고 최종적으로 SecurityFilterChain 빈 반환

 

5) SpringBootWebSecurityConfiguration

 

6) WebSecurityConfiguration :

HttpSecurityConfiguration에서 생성한 HttpSecurity 객체를 주입벋는다. Form로그인 기능과 Basic 기능을 추가 정의한 기본 SecurityFilterChain 빈을 정의

 

* SecurityFilterChain이 만들어지고 나면 빌더클래스의 빌드를 통해 FilterChainProxy 생성자에 SecurityFilterChain 전달

SecurityFilterChains에는 여러 SecurityFilterChain을 가지고 있다

 

* 커스텀 시큐리티 필터 체인을 만드는 경우 SpringBootWebSecurityConfiguration의 SecurityFilterChainConfiguration이 구동되지 않는다

+ 커스텀 시, SecurityFilterChain과 WebSecurityConfigurerAdapter 두 가지 모두 설정할 수 없으며 하나만 정의해야 한다

 

 

 

 

 

728x90