spring security 개발하며 swagger를 적용하다 문제가 생겼다. 에러를 보는 순간 발생 이유를 파악할 수 있었다.
나는 API 보호를 위해 spring security를 적용했다. 그리고 swagger는 API 명세서를 자동으로 작업해 주는 도구다. 그렇다. API 명세서를 작성하고 테스트 자동화를 하기 위해선 API에 접근해야 하는데, 내가 만든 spring security가 API 접근을 차단한 것이다.
api에 접근하기 위한 코드를 추가해 주자.
security = @SecurityRequirement(name = "swagger에서 쓸 토큰 이름")
@SecurityScheme(
name = "swagger에서 쓸 토큰 이름",
type = SecuritySchemeType.APIKEY,
in = SecuritySchemeIn.HEADER,
paramName = "spring security를 위해 설정한 토큰 이름"
)
http
.authorizeRequests(authorizeRequests -> authorizeRequests
.requestMatchers("/swagger-ui/**", "/api-docs/**").permitAll() //swagger url 접근 설정 추가하기
return http.build();
Authorize 버튼을 통해 토큰을 검증하면 api 접근이 가능해진다.