본문 바로가기
[ Development ]/[ Back-end ] Spring 기본

[Spring/Swagger] SpringBoot의 Spring Security 환경에서 Swagger 적용시 로그인 화면 임시 해결 방법

by dev charlotte 2024. 2. 15.

( 결론부터 말하자면

로그인 화면의 유저 네임과 패스워드를

모를 때 사용하는 방법 )

1. WebConfig 파일 수정으로 해결할 수 없는 경우와 그 이유

스프링부트에서 Spring Security를 적용한 프로젝트라면

Swagger를 사용할 때 로그인 화면을 만날 가능성이 매우 높다

 

해결 방법을 검색하면

build.gradle 에 springfox 관련 dependency 코드를 추가하고

WebConfig 라는 자바 Config 클래스를 생성하는 코드가 나온다

 

검색했을 때 나오는 대부분의 WebConfig 코드는

WebMvcConfigurer를 상속 받는 클래스인데

WebMvcConfigurer 의 WebMvcConfigurerAdapter 는

spring 5 버전부터 지원되지 않기 때문에

해당 코드들로는 해결할 수 없다

 

spring 5 이상의 버전에서

swagger 3 이상의 버전을 사용하려면

SwaggerConfig 파일과 SecurityConfig 파일의 수정이 필요하고

application.yml 파일에 pathmatch 관련 코드 추가가 필요한데

 

수정해도 ant_path_matcher를 지원하지 않는 버전은

다른 수정이 더 추가적으로 필요하다

2. SecurityConfig를 사용하는 방법을 선택하지 않은 이유

진행 중인 프로젝트가 복잡하지는 않지만

보안 관련 수정을 하지 않는 것이

오히려 프로젝트의 목적에 더 적합하기 때문에

 

굳이 추가적인 수정은 하지 않고

로그인 화면이 뜨는 swagger를

사용할 수 있게끔만 수정했다

 

3. 결론 >> 직접 지정하는 방법 !!

방법은 정말 간단하다

 

스프링 공식 문서에 의하면

The user credentials are the normal Spring Security user details 

(which default in Spring Boot to “user” and a random password).

( https://docs.spring.io/spring-boot/docs/1.3.5.RELEASE/reference/html/boot-features-security.html )

 

사용자 이름는 user로,

패스워드는 랜덤으로

설정되어 있음을 알 수 있다

 

랜덤 값을 알기는 복잡하니

빠르게 로그인하고 싶다면

사용자 이름과 패스워드를 지정하면 된다

 

3-1. application.properties 인 경우

application.properties 파일이라면

spring.security.user.name=root
spring.security.user.password=root

를 추가하면 되고,

 

3-2. application.yml 인 경우

application.yml 파일이라면

spring:
    security:
        user:
            name: root
            password: root

 

을 추가하면 된다

 

끝!