본문 바로가기

Back-End/Spring

[Spring Boot] Spring Security 사용 중 Swagger 401 에러 페이지

728x90

회원가입을 구현할 때까지만 해도 잘 나왔던 swagger 페이지가 로그인 구현을 한 후에는 401 에러 페이지가 나옵니다. 로그인을 구현하기 위해 서버에 Spring Security 를 적용하였는데, Spring Security 는 권한 부여를 위한 Role 이라는 개념을 사용하기 때문에 Swagger 에 접근할 수 있는 Role 을 정의하고, 해당 Role 을 가진 사용자만 Swagger 에 접근할 수 있게 합니다.

이를 해결하기 위해서, Spring Security 에서 Swagger 에 해당하는 url 을 무시하도록 설정하면 됩니다.

 

Spring Security 에서 해당 url 을 무시하도록 설정

아래와 같이 spring security 룰을 무시하게 하는 url 규칙을 설정합니다.

public class SecurityConfig extends WebSecurityConfigurerAdapter {
...
}

 

 

그런데 Spring Security 공식문서 에 따르면, WebSecurityConfigurerAdapter 가 deprecated 되었다고 합니다. 따라서 Spring Security 5.4 에서는 WebSecurityCustomizer 를 사용하여 아래와 같이 작성해줍니다.

antMatchers() 에 Swagger 에 해당하는 url 을 넣어주면 됩니다.

public class Securityconfig {
    // Spring Security 룰을 무시하게 하는 url 규칙
    @Bean
    public WebSecurityCustomizer securityCustomizer() {
        return web -> web.ignoring().antMatchers("/v3/api-docs", "/swagger-resources/**", "/swagger-ui.html", "/webjars/**", "/swagger/**");
    }
}

 

 

728x90