Quarkus 与 Swagger UI 申请全局授权

One*_*Dot 4 authentication endpoint swagger swagger-ui quarkus

我已经使用@OpenAPIDefinition注释配置了 OpenAPI,以在 Swagger UI 上显示授权(按钮),但目前它没有功能,当我尝试进行身份验证时,它什么也不做(不执行任何请求)。

我想要实现的是通过 Swagger UI 上的授权按钮进行身份验证;然后提取令牌并将其作为授权标头传递到所有端点。

如何配置和利用授权功能,然后使其对所有端点全局可用?

我的应用程序使用带有 Bearer 方法的 HTTP 进行保护。

Swagger UI 身份验证的当前配置

@OpenAPIDefinition(
    info = @Info(
            title = "My API",
            version = "1.0.0"
    ),
    components = @Components(
            securitySchemes = {
                    @SecurityScheme(
                            securitySchemeName = "bearerAuth",
                            type = SecuritySchemeType.HTTP,
                            scheme = "bearer",
                            bearerFormat = "JWT"
                    ),
                    @SecurityScheme(
                            securitySchemeName = "basic",
                            type = SecuritySchemeType.HTTP,
                            scheme = "basic"
                    )
            }
    ),
    security = {
            @SecurityRequirement(name = "bearerAuth"),
            @SecurityRequirement(name = "basic")
    }
)
public class CustomApi extends Application { }
Run Code Online (Sandbox Code Playgroud)

小智 5

您还需要将令牌 url 添加到定义中,以便 Swagger-UI 知道如何检索令牌并进行身份验证。我在这里有一个示例: https: //github.com/radcortez/microprofile-samples/blob/042e4d349a09a8505b25b880dd4f3e0095b55369/services/book-api/src/main/java/com/microprofile/samples/services/book/BookApplication.java #L40-L55

请告诉我这是否适合您。干杯!