
이전 포스팅에 이어서, DelegatingFilterProxy와 FilterChainProxy에 대해 조금 더 상세히 알아보자.
SecurityAutoConfiguration: DelegatingFilterProxy를 등록해주는 Config 파일 (빈을 등록해두면 해당 빈으로 요청을 가로챔)
@AutoConfiguration(after = SecurityAutoConfiguration.class)
@ConditionalOnWebApplication(type = Type.SERVLET)
@EnableConfigurationProperties(SecurityProperties.class)
@ConditionalOnClass({ AbstractSecurityWebApplicationInitializer.class, SessionCreationPolicy.class })
public class SecurityFilterAutoConfiguration {
private static final String DEFAULT_FILTER_NAME = AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME;
@Bean
@ConditionalOnBean(name = DEFAULT_FILTER_NAME)
public DelegatingFilterProxyRegistrationBean securityFilterChainRegistration(
SecurityProperties securityProperties) {
DelegatingFilterProxyRegistrationBean registration = new DelegatingFilterProxyRegistrationBean(
DEFAULT_FILTER_NAME);
registration.setOrder(securityProperties.getFilter().getOrder());
registration.setDispatcherTypes(getDispatcherTypes(securityProperties));
return registration;
}
...
DelegatingFilterProxy에서 등록된 빈의 이름을 확인해볼 수 있음

DelegatingFilterProxy의 이름은 springSecurityFilterChain (스프링 시큐리티 의존성을 추가하면 자동으로 등록됨)

SecurityFilterChain의 리스트이며, 요청에 알맞은 SecurityFilterChain으로 전달함
FilterChainProxy

기본적으로 1개의 FilterChain이 존재하며, 해당 FilterChain에는 16개의 Filter가 존재함