Backend/Spring Security

SecurityFilterChain

olsohee 2024. 1. 21. 13:55

SecurityFilterChain

Spring Security는 인증 처리 과정을 서블릿이 제공하는 필터를 기반으로 처리한다. Spring Security는 SecurityFilterChain을 제공하는데, 이는 인증과 인가를 위한 필터들의 모음이다.

 

Spring Security에서는 인증, 인가에 대한 처리를 여러 개의 필터를 통해 연쇄적으로 실행하여 수행한다. 이때 상황에 따라 필요한 필터가 있고 필요 없는 필터가 있을텐데, 설정 클래스를 통해 필요한 필터들을 등록해주면 된다. 다음은 Spring Security 설정을 하는 설정 클래스의 예시이다. 이때 securityFilterChain 메소드는 SecurityFilterChain에 대한 전반적인 설정을 하고, SecurityFilterChain 빈을 생성한다.

@Configuration
public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.csrf(AbstractHttpConfigurer::disable) // 보안 관련 필터 등록과 설정
                .authorizeHttpRequests(authHttp -> authHttp // 권한 관련 필터 등록과 설정
                        .requestMatchers("/join", "/login").permitAll()
                        .anyRequest().authenticated());
        return http.build();
    }
}

DelegationgFilterProxy

DelegationgFilterProxy는 서블릿이 제공하는 기술로, 서블릿 컨테이너와 스프링 컨테이너를 연결해주는 서블릿 필터이다. 

동작 방식은 다음과 같다.

  1. DelegationgFilterProxy가 서블릿 컨테이너로 넘어온 HTTP 요청을 받는다.
  2. DelegationgFilterProxy는 등록된 스프링 빈 중 SecurityFilterChain을 찾는다.
  3. 빈을 찾으면 SecurityFilterChain에게 HTTP 요청을 위임한다.
  4. SecurityFilterChain의 필터들이 순차적으로 실행된다.

 

 


Reference