서론
졸업 작품을 하던 도중 Spring Security 설정을 해주려고 하였습니다.
기존에 참고하고 있던 책과 강의들은 보통 WebSecurityConfigurationAdapter를 상속받아 Security Config를 설정해 주었습니다. 하지만 저는 Spring Framework Version 6.0.11 Spring Boot Version 3.1.2를 사용하고 있는 상황이라 WebSecurityConfiguration Class, .csrf().disable() 등의 메소드가 depracated 되었습니다.
개념적으로 Spring Security 부분을 처음 접하는 상황에서 Security Config 설정을 하시는 분들께 조금이라도 도움이 되는 바램에서 해당 포스팅을 작성하였습니다.
Deprecated란?
JWT 강의와 블로그 그리고 여러 책을 참고하여 JWT Config 관련 소스 코드를 작성하는 도중 다음과 같은 메시지가 뜨는 것을 확인할 수 있었습니다.
5.x 버전 이상에서 WebSecurityConfigureAdapter class와 HttpSecurity에서의 .csrf() 함수는 더 이상 사용되지 않는다고 합니다.
WebSecurityConfigurerAdapter 대신에 SecurityFilterChain
"WebSecurityConfigurerAdapter"를 대신하여 사용하는 interface입니다.
WebSecurityConfigurerAdapter는 Override를 하여 사용하는 방식이었다면,
SecurityFilterChain는 Bean을 직접 설정하여 사용하는 방식입니다.
Override란?
상속의 기능에서 함수만 재정의 하기 위한 기능이라고 생각하시면 생각하시기 쉽습니다.
(상속되어 있기 때문에 return 값은 자동으로 설정) : 조금 더 정확히 말하면 Override를 받아서 함수를 재정의 해주는 경우나 return 값이 다른 경우에는 return 값을 설정해 줘야 하지만 여기서는 상속의 개념에 근접한 override라고 생각하시면 편하실 겁니다.
Bean 이란?
해당 메서드의 리턴되는 Object를 Ioc(Spring)으로 등록해줍니다.
(return 값을 등록해 줘야 하기 때문에 return 값이 존재)
Override와 Bean의 차이점
Override와 Bean 코드를 작성할 때에 차이점은 Bean 코드를 작성할 때에는 return 값이 존재해야 합니다.
.csrf().disable() 메소드 depracated
.csrf()는 "사이즈 간의 위조 요청", .disable()는 "종료"라는 뜻입니다.
즉, http로 사이즈 간의 위조 요청이 들어오면 종료해달라는 함수이지만 deprecated가 된 것을 확인할 수 있습니다.
하지만 Lamda 작성으로 바뀐 것입니다.
Lamda란?
java8 version 이후로 나온 기능으로 인터페이스를 사용하고 작성하는 방식을 단순화하는 기능입니다.
.antMatchers() 메소드 depracated
.antMatchers() 메소드 대신에 .requestMachers() 메소드를 사용하면 됩니다.
이런 식으로 직접 url을 입력해 주면 됩니다.
//수정 후 방식
.authorizeHttpRequests((requests) -> requests
.requestMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
)
//기존 방식
.authorizeRequests()
.antMachers("/home")
추가로 공부하면 좋은 부분 & 참고 강의
Spring Security의 구조와 filterChain의 동작 방식을 이해하면 좋습니다.
'JAVA' 카테고리의 다른 글
[Java] 객체(Object)란? 인스턴스(Instance)란? 아주 쉽게 정리(+코드) (0) | 2024.10.16 |
---|---|
[Java] 클래스(Class)란? 아주 쉽게 그림으로 정리(+코드) (1) | 2024.10.16 |
[postman][Spring] JPA 라이브러리로 API 전송 시 NULL 값 발생 해결 방법 (0) | 2023.08.26 |
[Spring][JAVA] org.springframework.dao.DuplicateKeyException 에러 해결 방법 (0) | 2023.08.10 |
[Spring] com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException 에러 해결 방법 (0) | 2023.08.09 |
댓글