Я использую следующие зависимости swagger для моего rest api:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-service-description-swagger</artifactId>
<version>3.2.6</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>3.17.6</version>
</dependency>
Теперь я добавляю безопасность в свой проект. Как я могу реализовать возможность использовать api из swagger?
Я могу установить @HeaderParam(HttpHeaders.AUTHORIZATION) для каждого метода, но я думаю, есть способ лучше?




Итак, теперь я хочу поделиться с вами рабочим решением, которое я использовал:
@SwaggerDefinition(securityDefinition = @SecurityDefinition(
apiKeyAuthDefinitions = {
@ApiKeyAuthDefinition(
key = HttpHeaders.AUTHORIZATION,
name = HttpHeaders.AUTHORIZATION,
in = ApiKeyAuthDefinition.ApiKeyLocation.HEADER
)
}
))
Он создаст кнопку безопасности для вашего пользовательского интерфейса Swagger, чтобы установить заголовок аутентификации. Теперь вам просто нужно аннотировать API, который вы хотите защитить, следующим образом:
@Api(value = "Your value", description = "Your description", authorizations = {
@Authorization(HttpHeaders.AUTHORIZATION)
})
Конечно, вы можете использовать свой собственный заголовок, но для своего решения я использовал HttpHeaders.AUTHORIZATION.
Так что я надеюсь, что это кому-то поможет.