Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로세스
- 프로그래머스 142086
- 기사단원의 무기 제곱근
- OOP의 특징
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- 웹 동작 과정
- 빌드관리도구
- Spring Security 5
- 달리기 경주 파이썬
- MySQL LEFT()
- Python 1000000007
- DDL DML DCL 차이
- 빌드관리도구 차이
- @RequestMapping과 @GetMapping
- 모듈로 연산
- 백트래킹
- www.google.com 검색하면 일어나는 일
- 알고리즘 1000000007 나누기
- 기사단원의 무기 파이썬
- PCB
- 정규화 장단점
- build.gradle 설정 오류
- MySQL RIGHT()
- Spring Security 버전 문제
- 이코테2021
- RDBMS와 NoSQL 차이
- commit message convention
- 달리기 경주 파이썬 시간초과
- java 동기화
- finalize 수동 호출
Archives
- Today
- Total
BUILD_SSO
[Spring Security 5] Deprecated된 WebSecurityConfigurerAdapter, Spring Security 버전 문제 해결 방법 본문
Books/스프링 부트와 AWS로 혼자 구현하는 웹 서비스
[Spring Security 5] Deprecated된 WebSecurityConfigurerAdapter, Spring Security 버전 문제 해결 방법
sohyeonnn 2023. 6. 5. 16:20Spring Security를 학습하던 도중 WebSecurityConfigurerAdapter 상속이 안되는 문제가 발생했습니다.
결과부터 말하자면 스프링 버전이 업데이트되면서 'WebSecurityConfigAdapter'는 Spring Security 5에서 deprecated 되었고, Spring Security 5.2.0 이상에서는 완전히 제거되었다고 합니다.
해결 방법, 문제 발생 코드, 해결 코드를 순서대로 작성해 보겠습니다.
◼ 해결 방법
스프링 공식 문서에서는 WebSecurityConfigAdapter 상속 대체 방법으로 @Bean을 생성하여 구성하는 기능을 권장하고 있습니다.
- 버전업 이전 방식
//이전 방법
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults());
}
}
- 버전업 이후 방식
바뀐 방법은 SecurityFilterChain bean을 등록하는 것입니다.
//Spring Security 5.2.0 이후 버전
@Configuration
public class SecurityConfiguration {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults());
return http.build();
}
}
◼ 문제발생 코드
문제가 발생한 클래스 전문입니다.
package com.book.springboot.config.auth;
import com.book.springboot.domain.user.Role;
import lombok.RequiredArgsConstructor;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
@RequiredArgsConstructor
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigAdapter {
private final CustomOAuth2UserService customOAuth2UserService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.headers().frameOptions().disable()
.and()
.authorizeRequests()
.antMatchers("/", "/css/**", "/images/**", "/js/**", "/h2-console/**").permitAll()
.antMatchers("/api/v1/**").hasRole(Role.USER.name())
.anyRequest().authenticated()
.and()
.logout()
.logoutSuccessUrl("/")
.and()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService);
}
}
◼ 해결 코드
권장 방법대로 SecurityFilterChain bean을 등록하여 해결했습니다.
package com.book.springboot.config.auth;
import com.book.springboot.domain.user.Role;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
@RequiredArgsConstructor
@EnableWebSecurity
public class SecurityConfig {
private final CustomOAuth2UserService customOAuth2UserService;
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.headers().frameOptions().disable()
.and()
.authorizeRequests()
.antMatchers("/", "/css/**", "/images/**", "/js/**", "/h2-console/**").permitAll()
.antMatchers("/api/v1/**").hasAuthority(Role.USER.getKey())
.anyRequest().authenticated()
.and()
.logout()
.logoutSuccessUrl("/")
.and()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService);
return http.build();
}
}
참고
'Books > 스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 카테고리의 다른 글
[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] build.gradle 설정 오류 (1) | 2023.05.28 |
---|
Comments