작년 2월부터 WebSecurityConfigurerAdapter를 상속받아
오버라이딩하는 방식은 Deprecated 되었고
지금은 Bean으로 등록하여 설정하는 방식을 이용해야 한다.
스프링 시큐리티 초보자 강의를 보고 있는데 예전 방식을 사용해서 매우 난해했다.
괜히 옛날 설정을 요즘 설정으로 변환하려다가
이 설정을 하려면 어떤 Bean을 만들어서 해야 하는 지 몰랐고
빈을 잘못 만들어서 순환참조 문제가 발생하고 아주 난리가 났다.
스프링 공식 사이트를 참고해서 어떤 식으로 바뀌었는지 천천히 다시 파악해보려고 한다.
1. SecurityFilterChain과 HttpSecurity
이전 방식
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults());
}
}
바뀐 방식 - SecurityFilterChain을 Bean으로 등록해서 사용
@Configuration
public class SecurityConfiguration {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults());
return http.build();
}
}
2. WebSecurity
이전 방식
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers("/ignore1", "/ignore2");
}
}
바뀐 방식 - WebSecurityCustomizer를 Bean으로 등록
@Configuration
public class SecurityConfiguration {
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring().antMatchers("/ignore1", "/ignore2");
}
}
3. AuthenticationManager
이전 방식
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
AuthenticationManager를 외부에서 사용할 수 있도록 등록하는 방법
@Bean
public AuthenticationManager authenticationManager(
AuthenticationConfiguration authenticationConfiguration) throws Exception {
return authenticationConfiguration.getAuthenticationManager();
}
4. PasswordEncoder
이전과 동일하거나 설정에 따라 다름 예) Bcrypt
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); // 등등
}
출처
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter
Spring Security without the WebSecurityConfigurerAdapter
In Spring Security 5.7.0-M2 we deprecated the WebSecurityConfigurerAdapter, as we encourage users to move towards a component-based security configuration. To assist with the transition to this new style of configuration, we have compiled a list of common
spring.io
'Spring > Spring' 카테고리의 다른 글
[JPA] JSON 직렬화 순환 참조 문제 (0) | 2023.06.27 |
---|---|
[Spring Security] 스프링 시큐리티 인증 아키텍처 (0) | 2023.06.07 |
ApplicationContext와 Spring Bean (0) | 2023.01.28 |
스프링 IoC와 DI (0) | 2023.01.08 |
5. 스프링 게시판 만들기 - CRUD (0) | 2023.01.04 |