Todo 프로젝트에 JWT 인증을 구현하기 전까지는 다음과 같이 간단한 코드만으로 http://localhost:8080/swagger-ui/index.html에서 API 테스트를 할 수 있었다.
@Configuration
class SwaggerConfig {
@Bean
fun openApi() = OpenAPI().components(Components())
.info(Info().title("Todo API").description("Todo API schema").version("1.0.0"))
}
JWT 인증 구현 후에는 위 코드만으로는 Swagger에서 테스트를 할 때 인증 헤더를 입력할 수 없어서 PostMan을 사용하다가 Swagger에도 인증 헤더를 입력하는 방법이 있지 않을까 해서 구글링을 하고 방법을 찾았다.
SwaggerConfig를 다음과 같이 코드를 추가해주면 된다.
@Configuration
class SwaggerConfig {
@Bean
fun openApi(): OpenAPI? {
val apiKey = SecurityScheme()
.type(SecurityScheme.Type.APIKEY)
.`in`(SecurityScheme.In.HEADER)
.name("Authorization")
val securityRequirement = SecurityRequirement().addList("Bearer Token")
return OpenAPI().components(Components().addSecuritySchemes("Bearer Token", apiKey))
.addSecurityItem(securityRequirement)
.info(Info().title("Todo API").description("Todo API schema").version("1.0.0"))
}
}
위와 같이 설정 후 http://localhost:8080/swagger-ui/index.html에 접속하면 다음과 같이 [Authorize] 버튼이 생긴다.
버튼을 누르면 다음과 같이 입력 창이 뜨는데 token 값만 입력해서는 인증이 제대로 되지 않고 Bearer를 같이 넣어주어야 한다.
[Authorize] 버튼을 누르면 다음과 같이 나오는데 [Close]를 누르고 API 테스트를 진행하면 된다.
[Logout] 버튼을 누르면 다시 입력창으로 바뀐다.
API 테스트를 할 때 Curl을 보면 -H 'Authorization: Bearer ...가 추가된 것을 볼 수 있다.
참고자료 : https://velog.io/@zinna_1109/Toy-Project-Swagger-Bearer-Token%EC%84%A4%EC%A0%95
'TIL(Today I Learned)' 카테고리의 다른 글
ESLint - missing in props validation (0) | 2024.05.24 |
---|---|
TIL - Redis에 대해 알아보기(+ 명령어) (2) | 2024.05.23 |
TIL - JWT Token 생성 및 검증(Access Token, Refresh Token) (0) | 2024.05.21 |
TIL - Java 8 date/time type `java.time.LocalDateTime` not supported (0) | 2024.05.20 |
TIL - Spring Security에서 JSON으로 로그인 처리 (0) | 2024.05.17 |