Quarkus Swagger-UI授权

问题描述

我目前正在使用quarkus-smallrye-openapi提供的Quarkus和Swagger-UI。 我们有来自Azure AD的OIDC作为安全性,而Swagger-UI目前不支持该OIDC(请参见Swagger-Docs),因此我无法将“真实”授权添加到swagger。 这意味着,我不能使用Swagger,因为我的端点至少受@RolesAllowed保护。 我们有一个端点来获取模拟安全性令牌,但是我不知道如何告诉摇摇欲坠地使用该令牌。 基本上,我想告诉swagger-ui“这里,我有这个令牌,将它作为Authorization: Bearer XXX添加到所有请求中”,但是我不知道如何在Quarkus中做到这一点。

解决方法

  1. 注册安全方案
seconds
  1. 用已注册的方案名称标记操作的安全要求。
@Path("/sample")
@SecuritySchemes(value = {
        @SecurityScheme(securitySchemeName = "apiKey",type = SecuritySchemeType.HTTP,scheme = "Bearer")}
)
public class SampleResource {
  1. “授权”选项现在应该在大摇大摆的页面上可用。在此处输入您的模拟api密钥。 enter image description here

  2. 从swagger ui触发服务。现在,您可以看到在请求中设置了 @GET @SecurityRequirement(name = "apiKey") String hello() { 标头。