• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

WebSecurityCustomizer 와 SecurityFilterChain 차이점에 대해 여쭙고싶어요

23.08.26 19:37 작성 조회수 1.88k

0

@Configuration
@EnableWebSecurity(debug = true) // 운용환경에서는 꼭 꺼야한다.
public class SecurityConfig {

    @Bean // Spring Security 무시시키기
    public WebSecurityCustomizer webSecurityCustomizer() {
        return new WebSecurityCustomizer() {
            @Override
            public void customize(WebSecurity web) {
                // /error -> spring에서 기본제공하는 것
                web.ignoring().requestMatchers("/favicon.ico", "/error")
//                        .requestMatchers(new AntPathRequestMatcher("/h2-console/**"));
                        // 멍청한 우리들을 위해 스프링이 제공해주신 위으 코드를 대신하는 메서드
                        .requestMatchers(toH2Console());
            }
        };
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        // and() 메서드가 deprecated되어 람다식으로 사용하라고 한다.
        return http.authorizeHttpRequests(authorizeHttpRequests -> {
            authorizeHttpRequests
                    .requestMatchers("/auth/login").permitAll()
                    .anyRequest().authenticated();
        }).csrf(AbstractHttpConfigurer::disable).build();
    }
}

안녕하세요 호돌맨님 위의 WebSecurityCustomizer에서 하는 일을 밑의 SecurityFilterChain에서도 할 수 있을것 같은데요 둘을 어떻게 사용방법을 구분해야할지 여쭙고 싶어요

30년차사수(ChatGPT) 에 물어보니

차이점:

  • WebSecurityCustomizer는 주로 보안 구성을 조정하고 보안 설정을 사용자 정의하는 데 사용됩니다. 이를 통해 더 세부적인 보안 요구 사항을 처리할 수 있습니다.

  • SecurityFilterChain은 주로 실제 보안 필터 체인을 구성하는 데 사용됩니다. 여러 보안 필터가 어떤 순서로 실행될지를 결정하며, 보안 관련한 요청 처리를 담당합니다.

둘 다 Spring Security의 핵심 요소이며 보안 구성과 필터 체인의 다른 측면을 다룹니다. 일반적으로 SecurityFilterChain을 사용하여 필터 체인을 정의하고, 필요에 따라 WebSecurityCustomizer를 사용하여 더 많은 세부 설정을 적용할 수 있습니다.

라는데.. 처음 Security를 접하다보니 감이 안잡히네용..

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.28

안녕하세요, 인프런 AI 인턴이에요.

WebSecurityCustomizer와 SecurityFilterChain은 Spring Security에서 보안 구성을 커스터마이징할 수 있는 인터페이스입니다.

WebSecurityCustomizer는 Spring Security의 FilterChainProxy에 대한 커스터마이징을 위해 사용됩니다. WebSecurityCustomizer를 구현하면 customize() 메서드를 오버라이딩하여 필요한 보안 구성을 추가하거나 필터를 무시할 수 있습니다. 예를 들어, 위의 코드에서는 “/favicon.ico”, “/error”, “/h2-console” 경로를 무시하는 설정이 있습니다.

SecurityFilterChain은 HttpSecurity 구성을 위해 사용됩니다. SecurityFilterChain을 생성하는 방식은 다양하지만, 위의 코드에서는 authorizeHttpRequests() 메서드를 사용하여 인증과 권한 부여를 설정하고 있습니다. “/auth/login” 요청에 대해서는 인증을 거치지 않도록 설정하고, 나머지 모든 요청에 대해서는 인증이 필요하도록 설정하고 있습니다. 또한, csrf() 메서드를 사용하여 CSRF 보호 기능을 해제하고 있습니다.

요약하자면, WebSecurityCustomizer는 FilterChainProxy에 대한 커스터마이징을 담당하고, SecurityFilterChain은 HttpSecurity 구성을 담당합니다.

더 자세한 내용은 Spring Security 공식 문서를 참고하시면 도움이 될 것입니다.

더 궁금하신 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!