티스토리 뷰

반응형

 

 

Spring Security 적용 시 설정한 api-docs URL 기본으로 안나오는 현상 해결

 

 

 

 

 

 

 

어제 springdoc 으로 swagger 간단하게 만들어 테스트해봤고

프로젝트 중인 패키지에도 적용을 해봤는데

 

테스트 했던 것과는 다르게 springdoc.api-docs.path (springdoc.swagger-ui.url) 대로 동작하지 않았다.

 

자꾸 swagger 디폴트 페이지가 먼저 뜸 ( https://petstore.swagger.io/v2/swagger.json )

내가 설정한 /api-docs 라는 url 로 검색해야 나오는 상황...

 

swagger default sample page

 

 

 

 

 

 

그래서 디폴트 페이지를 아예 안나오게 옵션을 추가해봤더니

springdoc:
  swagger-ui:
    disable-swagger-default-url: true   #디폴트 페이지 안나오게
    path: /api-ui.html
  api-docs:
    path: /api-docs
  show-actuator: true
  default-produces-media-type: application/json

 

swagger-ui

 

 

그냥 디폴트 페이지만 안나올 뿐 내가 설정한 api-docs 는 나오지 않음.

 

 

 

 

프로젝트 설정차이를 비교해 본 결과, 

Spring security 를 설정하고 안하고 차이가 있어 swagger 내부 호출이 securityfilter에 걸리는게 있겠구나를 깨달음.

역시나...

 

개발자도구 - 네트워크 확인

 

localhost:port/{springdoc.api-docs.path}/swagger-config

swagger 내부에서 swagger-config 호출하는데 security에 걸려서 내가 설정한 url 정보를 받지 못한 상황이었다.

그래서 security에 내가 설정한 api-docs path 로 추가로 넣어줬다.

 

.antMatchers("/", "/api*", "/api-docs/**", "/swagger-ui/**").permitAll()

 

내가 application.yml 에 설정한 springdoc.api-docs.path 하위도 추가 허용해주었다.

 

 

정상 동작 확인

 

 

 

 

내부적으로 url 호출이 저렇게 변형되어 할 것이라 생각을 못했다.

/swagger-ui/**  하위로 호출 할줄 알았는데...

 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
«   2024/09   »
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
Total
Today
Yesterday