본문 바로가기

Spring Framework/SpringSecurity

[Spring Security] DelegatingFilterProxy와 FilterChainProxy

DelegatingFilterProxy

이 글은 Spring Security 6.4.3을 기반으로 작성되었습니다.

 

 

위 그림은 Client의 하나의 HTTP request에 대해서 Filter들을 거쳐 Servlet까지 가는 그림입니다.

 

DelegatingFilterProxy는 이 Filter중 하나입니다.

 

 

DelegatingFilterProxy는 스프링에서 제공하는 필터 구현체로서,

Servlet 컨테이너와 스프링 IoC 컨테이너의 다리 역할을 합니다.

 

다리 역할?

서블릿 컨테이너는 스프링 IoC 컨테이너에서 관리하는 Bean들에 대해 알지 못합니다.
하지만 DelegatingFilterProxy는 스프링 컨테이너에서 Filter를 구현한 Bean(Bean Filter)들을 찾아 등록할 수 있습니다.

※ 아래에서부터는 'Filter를 구현한 Bean'을 'Bean Filter'라고 부르겠습니다.

 

 

 

 

FilterChainProxy

위에서 DelegatingFilterProxy가 Bean Fitler을 등록한다고 했습니다.

FilterChainProxy는 바로 그 Bean Filter중 하나입니다.

 

 

 

스프링에서 제공하는 특별한 Filter로서,

SecurityFilterChain을 통해서 많은 Filter 객체들에게 위임을 가능하게 합니다.

 

SecurityFilterChain은 Filter들과 Servlet이 포함되어 있는 FilterChain과는 다른 개념임을 유의해주시기 바랍니다.

 

 

다음 포스트는 FilterChainProxy에서 사용되는

SecurityFilterChain과 SecurityFilter에 대해 알아보겠습니다.

 

 

Reference

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