Spring Security WebSecurityConfigurerAdapter 가 deprecated 된 이슈해결하기
Spring Security 5.7.0-M2 부터는 구성 요소 기반 보안 설정으로 변경된다는 이슈가 있었다. 예전 방식 WebSecurityConfigurerAdapter 상속 후, configure 메소드를 오버라이딩 하여 설정하는 방식에서 5.7.x 이후 버전 부터 SecurityFilterChain 를 빈으로 등록하는 방식을 권장한다고 한다.
/**
* SpringSecurity config
* Created by blake on 2023/01/09.
*/
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class OldSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UmsAdminService adminService;
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
// HttpSecurity 구성 생략
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService())
.passwordEncoder(passwordEncoder());
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
SpringBoot 2.7.0 이후
공식 사이트에서 권장하는 방식으로 변경해보자
/**
* SpringSecurity 5.4.x 이후 설정
* 순환 의존성을 피하기 위해 HttpSecurity만 구성
* Created by blake on 2023/01/09.
*/
@Configuration
public class SecurityConfig {
@Bean
SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
// HttpSecurity 구성 생략
return httpSecurity.build();
}
}