Spring/Spring Security

[Spring Security] WebSecurityConfigurerAdapter Deprecated 해결

빅콜팝 2022. 10. 27. 15:21
728x90
반응형

스프링 시큐리티를 적용하기 위해 WebSecurityConfigurerAdapter 를 상속 받으려고 했는데, 더 이상 해당 클래스가 사용되지 않는다는 경고가 나왔다.

WebSecurityConfigurerAdapter 클래스
- 스프링 시큐리티가 초기화 되면서 해당 클래스가 실행되면, 설정 초기화 작업에 도움을 주는 api들이 실행 된다.



'org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter' is deprecated

 

 

SecurityFilterChain Bean을 사용하여 HttpSecurity를 구성, WebSecurityCustomizer Bean을 사용하여 WebSecurity를 구성하도록 안내하고 있다.



WebSecurityConfigurerAdapter override 대신 SecurityFilterChain bean 을 생성하는 방식으로 간단히 변경이 가능하다.


변경 전 WebSecurityConfigurerAdapter override

@Configuration
@RequiredArgsConstructor
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Bean
    public void configure(AuthenticationManagerBuilder auth) throws Exception{
        auth.userDetailsService(userDetailsService);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception{
        http
                .authorizeRequests()
                .anyRequest().authenticated();

        http
                .formLogin()
                .loginPage("/member/login")
                .defaultSuccessUrl("/")
                .usernameParameter("userId")
                .passwordParameter("password")
                .loginProcessingUrl("/login");
    }
    
    @Override
    public void configure(WebSecurity web){
        web.ignoring().antMatchers("/images/**", "/js/**"); 
    }

}


변경 후 SecurityFilterChain bean

@Configuration
@RequiredArgsConstructor
public class SecurityConfig {

    @Bean
    public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfiguration) throws Exception {
        return authConfiguration.getAuthenticationManager();
    }

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .anyRequest().authenticated();

        http
                .formLogin()
                .loginPage("/member/login")
                .defaultSuccessUrl("/")
                .usernameParameter("userId")
                .passwordParameter("password")
                .loginProcessingUrl("/login");

        return http.build();
    }
    
    @Bean
    public WebSecurityCustomizer webSecurityCustomizer() {
        return (web) -> web.ignoring().antMatchers("/images/**", "/js/**");
    }

}



Reference
https://stackoverflow.com/questions/72381114/spring-security-upgrading-the-deprecated-websecurityconfigureradapter-in-spring

 

https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter

728x90
반응형