swagger-ui에 인증을 적용해 요청을 테스트하려 했다.
Authorize 버튼을 눌러 인증 정보를 입력했지만 API의 자물쇠 아이콘을 누르니 실제로 인증이 적용되지 않는 문제가 발생했다.
SpringDoc 설정의 @SecurityScheme
의 name 속성과 컨트롤러의 @SecurityRequirement
의 name 속성이 일치하지 않아 발생했다.
Controller
@SecurityRequirement(name = "bearerAuth")
@Tag(name = "ApiV1MemberController", description = "회원 관련 API")
@RestController
@RequestMapping("/api/v1/members")
@RequiredArgsConstructor
public class ApiV1MemberController {
...
}
SpringDocConfig
@Configuration
@OpenAPIDefinition(info = @Info(title = "API 서버", version = "v1"))
@SecurityScheme(
name = "Authorization",
type = SecuritySchemeType.HTTP,
scheme = "bearer",
bearerFormat = "JWT"
)
public class SpringDocConfig {
...
}
컨트롤러에선 "bearerAuth"
라는 이름을 사용했지만 SpringDoc설정에선 "Authorization"
을 이름으로 사용하고 있었다.
SpringDocConfig의 @SecurityScheme
name
속성을 "bearerAuth"
로 일치시켜주니 해결되었다.
name
속성으로 임의의 이름을 사용해도 되지만 일치하게 적용했는지는 확인하자 😅
Swagger 인증 관련 문서
https://swagger.io/docs/specification/v3_0/authentication/basic-authentication/