WebSecurityConfigurerAdapter
configure 메서드를 Overriding하여 웹 보안 설정을 구성할 때 사용했던 기본 클래스
(보안 설정 예시: 특정 URL에 대한 접근 권한 설정, 폼 로그인, HTTP Basic 인증 등)
Spring Security 5.7부터 클래스가 deprecated, 6.2 현재 removed
대신 5.4부터 소개된 더 유연하고 모듈화된 Component 구성을 사용
Component 기반으로 설정을 모듈화하면 세밀한 제어와 상황에 따라 필요한 설정만 포함시키기가 더 용이해짐
- 개별 보안 구성 요소를 Bean으로 선언 (Spring 컨테이너에 등록, Life Cycle을 Spring이 관리)
- SecurityFilterChain 또는 WebSecurityCustomizer 인터페이스를 구현
cf1. Spring Blog (영문)
cf2. https://devlog-wjdrbs96.tistory.com/434
cf3. https://velog.io/@chiyongs/Spring-deprecated된-WebSecurityConfigurerAdapter-이젠-안녕
체인 호출 방식
SecurityContext.and()를 활용한 체인 호출로 여러 설정을 연결하면서 구성
Spring Security 6.1부터 메서드가 deprecated, 대신 각 설정을 보다 더 독립적으로 구성하는 방식을 권장
HttpSecurity 객체에 각 설정을 argument로 받아 구성하는 메서드를 활용해 설정 별로 블록 생성
- 설정이 블록으로 분리되어 코드의 독립성 및 가독성 증가
- 설정을 각 기능별로 수정할 수 있어 유지보수 용이
- 설정 간의 관계가 더 명확하게 드러나므로 의도 파악 용이
HttpSecurity의 authorizeRequests() 메서드
Spring Security 6.1부터 메서드가 deprecated, 7.0에 remove 예정
대신 authorizeHttpRequests() 사용
AbstractRequestMatcherRegistry의 antMatchers(), mvcMatchers(), regexMatchers() 메서드
Spring Security 5.8부터 메서드가 deprecated, 6.2 현재 removed
대신 requestMatchers() 사용
cf1. Spring Security 공식 문서 (영문)
권장에 따라 구현한 예시
Spring Boot 3.x (Spring Security 6.x) Spring Security 공식 문서 (영문)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
@EnableWebSecurity
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain( HttpSecurity http ) throws Exception {
http
.csrf( httpSecurityCsrfConfigurer -> httpSecurityCsrfConfigurer.disable() )
.authorizeHttpRequests( authorizationManagerRequestMatcherRegistry -> authorizationManagerRequestMatcherRegistry
.requestMatchers( "/public/**" ).permitAll()
.anyRequest().authenticated()
)
.logout( logout -> logout.logoutSuccessUrl( "/" ) );
return http.build();
}
}
'개발 > 자바 Java' 카테고리의 다른 글
따라가며 만들기 + 마이그레이션 연습 (Spring Boot, AWS) (2) | 2024.06.16 |
---|---|
[Ubuntu] 따라하기 + 배포 연습 (Spring Boot) (0) | 2024.06.16 |
[Java] Spring Boot Test - IllegalArgumentException: Failed to find servlet [] in the servlet context (0) | 2024.06.09 |
[IntelliJ] 인텔리제이 초기 설정 / 옵션 (개인 기록용) (1) | 2024.05.27 |
[jQuery] 코드 블럭 복사하기 - (문제 해결) 플러그인과 함께 사용하기 (0) | 2024.05.18 |
[jQuery] 코드 블럭 복사하기 - (문제 인지) 플러그인들과의 충돌 (2) | 2024.05.17 |