<Spring Security> 6. Filter 추가 되는 과정 살펴보기
by BFine
가. HttpSecurity
a. filters
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin();
}
}
- 보통 Spring Security를 사용할때 위처럼 HttpSecurity의 메서드를 이용하여 원하는 기능의 Filter를 추가한다.
- 위의 코드를 보면 이전글에서 보았던 Filter들 역시 HttpSecurity의 메서드를 이용했다는 것을 볼 수 있다.
- 그러면 어떻게 설정들이 어떻게 필터로 추가가 되는지 궁금해져서 한번 따라가 보았다.
b. configurers
- HttpSecurity의 config 관련 메서드들은 모두 각각의 Configurer 클래스를 생성한다.
- .anonymous 메서드로 예를들면 아래처럼 객체를 할당하고 AbstractConfiguredSecurityBuilder에 저장되는 것을 볼수 있다.
c. Configurer -> Filter
- 그러면 configurer들은 어떻게 FilterChainProxy에 Filter 형태로 저장되는건지 궁금해진다.
- 디버그 해보면 WebSecurity에서 FilterChainProxy를 생성하는 것을 볼 수 있는데 여기서 Filter들이 등록된다.
- 이렇게 보면 저 build를 할때 어떤 작업을 해야 Filter가 생성되어지는지 궁금해진다.
- 도대체 어디서 Filter를 생성하는지 찾기 힘들었는데 디버그해서 따라가보면 아래처럼 configurer들의 .configure 메서드를 실행하는게 보인다.
- 아래에 this는 HttpSecurity를 가리키고 있고 Vistor 패턴 느낌으로 각각 configurer들이 생성한 Filter를 HttpSecuirty에 추가하는 것을 볼 수 있다.
- 즉 Security 설정할때 사용하는 HttpSecurity의 메서드들은 FilterChainProxy에 Filter형태로 추가가 된다.
- 상세 절차는 바로 addFilter를 하는 것이 아닌 configurer 형태로 저장되어 각각의 configurer에서 Filter를 생성된다.
- 이때 바로 추가가 되는것이 아니고 모든 configurer 설정이 끝난 이후 빌드될때 각각의 Filter들이 저장되며 이후에 FilterChainProxy 객체를 생성할때
생성자의 파라미터로 추가가 되는 것이다.
'공부 > Spring Security' 카테고리의 다른 글
<Spring Security> 8. REST API 로그인 만들기 (0) | 2021.11.19 |
---|---|
<Spring Security> 7. HttpSecurity 메서드 분석하기 (0) | 2021.11.14 |
<Spring Security> 5. FilterChainProxy에 들어가는 Filter들 분석하기 (0) | 2021.10.21 |
<Spring Security> 4. Custom 필터 추가해보기 (0) | 2021.10.11 |
<Spring Security> 3. 인증&인가 처리 과정 (0) | 2021.09.05 |
블로그의 정보
57개월 BackEnd
BFine