소개
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
'노빠꾸 개발일지 > SPRING' 카테고리의 다른 글
[스프링] 의존성 주입(Dependency Injection) 방법 (0) | 2023.06.12 |
---|---|
스프링 프레임워크(Spring Framework)와 스프링 부트(Spring Boot) (0) | 2023.06.03 |
스프링부트 프로젝트 기본 생성 방법 및 간단한 정리 (0) | 2023.02.19 |
스프링 부트(Spring Boot)란? (0) | 2023.02.17 |
[Spring JPA] 스프링부트 + JPA + MySQL 프로젝트 세팅하기 - 1 (0) | 2022.09.22 |