묠니르묘묘
꾸준히 성장하는 개발자스토리
묠니르묘묘
전체 방문자
오늘
어제
  • 분류 전체보기 (188)
    • 프로그래밍 (48)
      • 디자인패턴 (4)
      • 예외,에러 (4)
      • Java (29)
      • Kotlin (3)
      • React.js (4)
      • JavaScript (2)
      • Apache Kafka (2)
    • Spring (49)
      • Spring (21)
      • Spring Cloud (3)
      • JPA (25)
    • 코딩테스트 (31)
      • 알고리즘 (5)
      • Java - 백준 (26)
      • Java - 프로그래머스 (0)
    • AWS (7)
    • 데이터베이스 (6)
    • 개발 etc (23)
    • 도서 (5)
    • 회고록 (4)
    • 데브코스-데이터엔지니어링 (15)

인기 글

최근 글

hELLO · Designed By 정상우.
묠니르묘묘

꾸준히 성장하는 개발자스토리

[스프링시큐리티] Spring Security 5.7 (WebSecurityConfigurerAdapter 에러해결방법)
Spring/Spring

[스프링시큐리티] Spring Security 5.7 (WebSecurityConfigurerAdapter 에러해결방법)

2022. 7. 3. 20:19

대학교 과제에서 게시판 만들기가 있어서 회원기능을 Spring Security(스프링 시큐리티)를 적용하여 사용했는데 아래와 같은 방법으로 더이상 사용되지 않는다고 표시됐다.

더 이상 WebSecurityConfigurerAdapter 를 상속받아서 스프링 시큐리티를 설정하지 않는다고 나와있다.

그렇다면 공식 홈페이지에서는 뭐라고 나와있는지 살펴보자.

 

 

https://spring.io/guides

스프링 공식문서 사이트에서 스프링 시큐리티를 검색해서 만드는 방법을 찾아보면 여기는 WebSecurityConfigurerAdapter를 사용하고 있었다.

그래서 다른 공식문서를 찾아보던 와중에 아래 게시글을 발견하였다.

 

https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter

WebSecurityConfigurerAdapter가 없는 스프링 시큐리티라는 제목이다.

스프링 시큐리티 5.7.0-M2 버전부터는 WebSecurityConfigurerAdapter를 사용하지 않는다고 나와 있다.

따라서 이제는 @Bean 을 사용하여 스프링 시큐리티를 구성해야 한다.

 

 

 

🧐 그렇다면 스프링 시큐리티 5.7.0을 안쓰면 되는것이 아닌가?

https://spring.io/projects/spring-security#support

초록색이 무료 보안 업데이트를 지원하는 기간이고, 노란색이 상업적 지원하는 기간이다.

단순히 사용하는 것이라면 정보가 잘 나와있는 스프링 시큐리티 5.6.x 버전을 사용하면 되겠지만 2022-11-15일에 무료 지원기간도 끝나고 보안적인 측면에서도 좋지않고, 새로운 기능들을 사용할 수 없고, 기본적으로 사용하는 스프링 부트라든지 그런 곳에서도 최신 버전을 지원하게 될 것이다.

따라서 새로운 버전이 나왔다면 공식문서를 읽고 한번 배워보는 것이 어떨까?

엄청 급하다면 5.6.x 버전으로 낮추고 빠르게 사용하면 되지만 급히지 않다면 5.7.x 버전을 한 번 배워보는게 좋을듯하다.

(개발자란 직업의 숙명인가요....?)

 

 

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.7-Release-Notes

위 내용은 Spring Boot 2.7 Release Notes (스프링부트2.7 릴리즈 노트) 중 하나이다.

(요새는 스프링부트를 많이 사용하기에 릴리즈 노트도 중요하다.)

여기서 중요한 부분은 스프링 부트 2.7은 더 이상 WebSecurityConfigurerAdapter가 사용되지 않는 스프링 시큐리티 5.7버전으로 업그레이드가 된다고 적혀 있다.

 

https://spring.io/projects/spring-boot#support

스프링부트도 이제 2.6.x버전도 이제 스프링 시큐리티 5.6.x 버전처럼 지원기간이 비슷하게 끝나는 점을 염두해두자.

 

 

 

🧐 WebSecurityConfigurerAdapter를 어떻게 5.7 버전처럼 사용하나요?

처음에 봤던 스프링 공식 홈페이지 블로그에서 설명이 잘 되어있지만 중요하면서 많이 사용되는 부분만 적어보겠다.

 

HttpSecurity 구성방법

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((authz) -> authz
                .anyRequest().authenticated()
            )
            .httpBasic(withDefaults());
    }
}

앞으로 권장되는 방법은 아래와 같이 SecurityFilterChain을 @Bean 등록하는 방법으로 바뀌었다.

@Configuration
public class SecurityConfiguration {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((authz) -> authz
                .anyRequest().authenticated()
            )
            .httpBasic(withDefaults());
        return http.build();
    }
}

 

WebSecurity 구성방법

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers("/ignore1", "/ignore2");
    }
}

앞으로 권장되는 방법은 아래와 같이 WebSecurityCustomizer를 @Bean으로 등록하는 것이다.

@Configuration
public class SecurityConfiguration {

    @Bean
    public WebSecurityCustomizer webSecurityCustomizer() {
        return (web) -> web.ignoring().antMatchers("/ignore1", "/ignore2");
    }
}
📝 위 방법을 사용할 때 주의할 점!!!
WebSecurity 요청을 무시하도록 구성하는 대신에 바로 위에서 HttpSecurity를 구성할 때 authorizeHttpRequests에서 그 경로를 permitAll 하는것이 좋다. 공식문서에서는 스프링 시큐리티에서 해당 경로를 무시하는 것이기 때문에 CSRF, XSS, Clickjacking 등에서 보호하지 않는다. 따라서 이 취약점으로부터 보호하려면 HttpSecurity에서 permitAll을 하자.

 

저작자표시 비영리 (새창열림)

'Spring > Spring' 카테고리의 다른 글

스프링부트 - 하루에 한 번 쿠키 기반 조회수 증가 구현  (1) 2022.10.03
[SpringBoot] 이미지 파일 다운로드  (0) 2022.07.06
스프링에서 파일저장하기  (0) 2022.05.11
[Lombok] @NoArgsConstructor, @ToString  (0) 2022.04.11
스프링부트 시큐리티 - SNS 로그인과 SNS 회원가입  (0) 2022.03.17
    'Spring/Spring' 카테고리의 다른 글
    • 스프링부트 - 하루에 한 번 쿠키 기반 조회수 증가 구현
    • [SpringBoot] 이미지 파일 다운로드
    • 스프링에서 파일저장하기
    • [Lombok] @NoArgsConstructor, @ToString
    묠니르묘묘
    묠니르묘묘

    티스토리툴바