BackEnd/Spring

[Spring] Spring Security (3) - Spring Boot의 Filter Chain

JJangGu 2022. 2. 27. 15:42

저번에 Spring Security에서 DelegatingFilterProxy 가 스프링 시큐리티가 생성하는 FilterChainProxy에 필터처리를 위임하고,

이 FilterChainProxy 는 다시 여러필터를 체인 형식으로 갖고 있는 SecurityFilterChain 에 처리를 위임하는 내용을 봤습니다.

 

그런데, Spring Boot 를 사용하다 보면 이런 설정들을 해준 기억이 없죠.

Spring Boot 는 강력한 보일러 플레이트의 기능을 하기 때문에, 이러한 설정들이 사용자에게 보이지 않고 해주는 경우가 많습니다.

그래서 어떤 기능을 제공받고 있는지, 어떤 개념을 이해하고 써야되는지 놓치기 쉽죠.

 

Spring Boot 에서 우리가 Spring Security 를 사용했음에도 DelegatingFilterProxy를 보지 못한 것은

SecurityFilterAutoConfiguration 이 동작하기 때문입니다.

 

예시를 하나 만들어보죠.

간단하게 구조를 잡았습니다. 

SpringFilterAutoConfiguration 가 AutoConfigureAfter 속성으로 등록이 됩니다. 

그리고 DelegatingFilterProxy 가 등록되는 과정을 볼 수 있습니다. 

 

DEFAULT_FILTER_NAME 은 앞의 게시물에서 보았던 springSecurityFilterChain 입니다. 이걸로 FilterChainProxy 가 등록되었다는 것을 알 수 있습니다. 

 

이제 DelegatingFilterProxy 로 넘어가보겠습니다.

DelegatingFilterProxy 는 FilterChainProxy에 필터처리를 위임하고, FilterChainProxy는 다시 여러필터를 체인으로 가지고 있는

SecurityFilterChain에 위임하면서 동작한다고 했는데, 그 과정을 보겠습니다.

 

DelegatingFilterProxy 에 있는 doFilter 입니다. WebApplicationContext 에서 등록된 필터를 찾아 위임을 해주고 있습니다. 

 

여기까지 본 후에 실제로 테스트 코드를 동작시켜 FilterChainProxy 의 코드가 실행되는지 살펴보겠습니다.