DelegatingFilterProxy
필터는 서블릿 사양에 정의된 기술이므로 서블릿 컨테이너 내부에서 빌드되고 실행됩니다.
따라서 Spring에서 정의한 Bean을 주입하여 사용할 수 없습니다.
그러나 Spring Security는 필터를 기반으로 사용자가 요청한 모든 요청을 처리합니다.
위임 필터프록시 클래스는 서블릿 필터이며 먼저 요청됩니다.
이 클래스는 Spring이 관리하는 Spring Bean(springSecurityFilterChain)을 찾아 위임하며 Spring Security는 Spring의 기술을 사용하면서 필터 기반의 보안 처리를 수행할 수 있습니다.
필터체인프록시
FilterChainProxy는 Spring Security 초기화 시 설정된 API를 기반으로 생성된 필터를 인덱싱 형태로 다음과 같이 관리한다.
사용자가 요청하면 필터 순서대로 호출되어 다음 필터로 전달됩니다.
마지막으로 모든 필터가 요청 처리를 완료하면 서블릿에 액세스합니다.
총 흐름
사용자가 처음으로 요청하면 서블릿 컨테이너에서 요청을 받습니다.
현재 여러 서블릿 필터가 이를 처리합니다.
이러한 필터 중 하나는 DelegatingFilterProxy 클래스입니다.
DelegatingFilterProxy는 springSecurityFilterChain이라는 생성된 Spring 빈을 가져오고 요청을 위임합니다.
springSecurityFilterChain이라는 이름으로 등록된 빈이 FilterChainProxy 클래스이고 FilterChainProxy가 관리하는 필터들을 순서대로 호출한다.
(필터 체인) 보안 처리. 마지막 FilterSecurityInterceptor가 완료되면 사용자 요청은 Spring 웹 레이어인 DispatcherServlet으로 전달됩니다.