[Spring Security] 2. DelegatingFilterProxy와 FilterChainProxy

조성우·2024년 7월 30일

Spring Security

목록 보기
2/16
post-thumbnail

이전 포스팅에 이어서, DelegatingFilterProxyFilterChainProxy에 대해 조금 더 상세히 알아보자.


DelegatingFilterProxy


  • 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 (스프링 시큐리티 의존성을 추가하면 자동으로 등록됨)


FilterChainProxy : springSecurityFilterChain

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


  • FilterChainProxy

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

0개의 댓글