티스토리 뷰
spring security 는 확장을 위해 WebSecurityConfigurer 라는 인터페이스를 제공하고 있다. spring 은 이전부터 확장 인터페이스에 대해 좀 더 용이하게 사용하도록 기본 구현을 하는 구현체들(추상클래스 포함)을 제공하는데 WebSecurityConfigurer 는 WebSecurityConfigurerAdapter 라는 추상 클래스가 그 역할을 한다. 확장이 필요한 경우 WebSecurityConfigurer 를 직접 구현하는 경우는 거의 없다. 이는 WebSecurityConfigurer 의 javadoc 에서부터 명시하고있다.
Allows customization to the WebSecurity. In most instances users will use EnableWebSecurity and either create a Configuration that extends WebSecurityConfigurerAdapter or expose a SecurityFilterChain bean. Both will automatically be applied to the WebSecurity by the EnableWebSecurity annotation. Since https://docs.spring.io/spring-security/site/docs/5.7.0-M2/api/org/springframework/security/config/annotation/web/WebSecurityConfigurer.html |
다만 spring security 5.7.0 부터 WebSecurityConfigurerAdapter 는 deprecate 됐으며, 버전 6 에 와서는 클래스가 아예 제거되어 버렸다. 그래서 spring boot 애플리케이션에서 WebSecurityConfigurerAdapter 를 이용하고 있었다면 이에 대한 마이그레이션도 필요하다. spring security 에서는 SecurityFilterChain 을 이용한 설정을 권장하고 있다.
// 기존 WebSecurityConfigurerAdapter 를 이용한 설정
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults());
}
}
// SecurityFilterChain 을 이용한 방식
@Configuration
public class SecurityConfiguration {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults());
return http.build();
}
}
WebSecurifyConfigurerAdapter 를 제거한 이유나 추가적인 마이그레이션 방법은 따로 가이드( https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter )가 있으니 참고하도록 하자.
'Java > spring' 카테고리의 다른 글
spring boot 3 migration#04 spring boot 3 resilience4j 버전이 안올라간다면 (1) | 2024.01.28 |
---|---|
spring boot 3 migration#03 @ConstructorBinding 스펙 변경 (0) | 2023.11.07 |
spring boot 3 migration#01 ListenableFuture (1) | 2023.05.14 |
spring boot 에서 ObjectMapper 확장하기 (1) | 2023.03.24 |
domain 에서 프레임워크 의존을 제거할 수 있을까 (4) | 2022.11.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- clean code
- Kotlin
- MySQL
- Jackson
- Git
- java8
- toby
- TEST
- frontcode
- mariadb
- frontend개발환경
- go-core
- DesignPattern
- EffectiveJava
- http
- OOP
- JavaScript Core
- db
- Design Pattern
- programming
- 정규표현식
- generics
- code
- javascript
- JPA
- spring cloud
- java
- servlet
- Spring
- backend개발환경
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함