노빠꾸 개발일지/SPRING

Spring Security 5.7.x 이후 버전에서 WebSecurityConfigurerAdapter 클래스의 deprecation 이유와 대안 방법

No Backing 2023. 2. 26. 14:58
반응형

소개

Spring Security에서 제공하는 WebSecurityConfigurerAdapter 클래스는 웹 애플리케이션의 보안 구성을 위해 사용되는 중요한 클래스입니다. 그러나 스프링 시큐리티 5.7.x 버전 이후부터는 이 클래스가 deprecation 되었습니다. 이번 피드에서는 WebSecurityConfigurerAdapter 클래스의 deprecation 이유와 대안 방법에 대해 알아보겠습니다.

WebSecurityConfigurerAdapter 클래스란?

WebSecurityConfigurerAdapter 클래스는 스프링 시큐리티에서 제공하는 클래스로, HTTP 요청에 대한 보안 구성을 설정하는 메서드를 제공합니다. 예를 들어, 로그인 폼, 로그아웃, 인증에 대한 설정을 추가할 수 있습니다.

WebSecurityConfigurerAdapter 클래스의 deprecation 이유

스프링 시큐리티 공식 문서에 따르면, WebSecurityConfigurerAdapter 클래스가 deprecated 되었으며, 다른 구현 방법을 제공하고 있습니다. 이유는 스프링 시큐리티 5.7.x 버전 이후에는 컴포넌트 기반의 보안 설정을 권장하기 때문입니다.

WebSecurityConfigurerAdapter 클래스의 대안 방법

"SecurityFilterChain Bean을 사용하여 HttpSecurity를 구성하거나 WebSecurityCustomizer Bean을 사용하여 WebSecurity를 구성할 수 있습니다."

스프링 시큐리티 공식 문서에서는 WebSecurityConfigurerAdapter 클래스가 deprecated 됨에 따라 다른 구현 방법을 제공하고 있습니다. @Bean을 등록하여 사용하는 것입니다. SecurityFilterChain, WebSecurityCustomizer을 반환하고 빈으로 등록함으로써 컴포넌트 기반의 보안 설정이 가능해집니다.

코드 예시

아래는 WebSecurityConfigurerAdapter 클래스를 상속하여 사용하는 방식과 빈을 등록하여 사용하는 방식을 비교해본 코드 예시입니다.

WebSecurityConfigurerAdapter 상속 방식

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http .authorizeHttpRequests((authz) -> authz .anyRequest().authenticated() ) .httpBasic(withDefaults());
    }
}

    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers("/ignore1", "/ignore2");
    }
}

빈(BEAN)등록 방식

@Configuration
public class SecurityConfiguration {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http .authorizeHttpRequests((authz) -> authz .anyRequest().authenticated() ) .httpBasic(withDefaults());
        return http.build();
    }

    @Bean
    public WebSecurityCustomizer webSecurityCustomizer() {
        return (web) -> web.ignoring().antMatchers("/ignore1", "/ignore2");
    }
}

결론

WebSecurityConfigurerAdapter 클래스가 deprecated 되었지만, 스프링 시큐리티에서는 다른 구현 방법을 제공하고 있습니다. 스프링 시큐리티 5.7.x 이상 버전을 사용하는 경우에는 @Bean을 등록하여 사용하는 방식을 활용해보는 것이 좋습니다.

참고해볼만한 URL

반응형