728x90
Springboot 3.1.0 환경에서 Spring Security로 인증 방식을 구현하던 중 FilterChain 등록 코드에서 deprecated 에러 사인이 등장했다.
Spring Security 6.1.0
SpringBoot 3.1.0 버전은 Spring Security 6.1.0 버전을 dependency 한다.
람다 DSL 사용
Lambda DSL은 버전 5.2부터 Spring Security에 있으며 람다를 사용하여 HTTP 보안을 구성할 수 있습니다.
HTTP 보안의 람다 구성이 이전 구성 스타일과 어떻게 비교되는지 살펴보겠습니다.
람다를 사용한 구성 (lamda DSL)
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorize -> authorize
.requestMatchers("/blog/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(formLogin -> formLogin
.loginPage("/login")
.permitAll()
)
.rememberMe(Customizer.withDefaults());
return http.build();
}
}
lamda DSL의 장점
- 다음을 사용하여 구성 옵션을 연결할 필요가 없습니다. .and()
- 자동 들여쓰기는 구성을 더 읽기 쉽게 만듭니다.
- Spring Security DSL에는 Spring Integration 및 Spring Cloud Gateway와 같은 다른 Spring DSL과 유사한 구성 스타일이 있습니다.
람다를 사용하지 않는 구성 (non-lamda DSL)
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests()
.requestMatchers("/blog/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.rememberMe();
return http.build();
}
}
왜 deprecated 되었을까?
- non-lamda DSL 방식은 반환 타입을 알지 못한 상태에서 어떤 개체 구성이 이루어지는지 명확하지 않았다.
- 중첩이 깊을수록 더 혼란스럽다.
- 일관성 없는 코드가 많았고 이것이 잘못된 구성을 야기했다.
https://docs.spring.io/spring-security/reference/migration-7/configuration.html
728x90
'Spring > Security' 카테고리의 다른 글
OAuth2) 싱글벙글 OAuth2, 그리고공식문서를 보고 하나하나 값 받아오기 (0) | 2023.07.11 |
---|---|
Spring Security) 싱글벙글 doFilterInternal() method 토큰 검증 후 DB접근에 대한 내 생각 (0) | 2023.07.09 |
Spring Security) UserDetailsService에서 비밀번호는 어디에서 검사하는 걸까? (0) | 2023.02.24 |