Quarkus OpenApi 在 application.properties 中向 SecurityScheme 添加 x-tokenName 扩展

Quarkus OpenApi adding x-tokenName extension to SecurityScheme in application.properties

我想使用 application.properties 文件将 x-tokenName 扩展添加到 quarkus 中的 openApi 安全方案组件。我使用微软作为 openIdConnect 的提供者,因此我收到了包含 access_token 和 id_token.

的响应

到目前为止我的配置看起来像这样:

quarkus.smallrye-openapi.security-scheme=oidc
quarkus.smallrye-openapi.security-scheme-name=OpenId
quarkus.smallrye-openapi.oidc-open-id-connect-url=https://login.microsoftonline.com/${TENANT_ID}/v2.0/.well-known/openid-configuration

对应的openapi.yaml查找安全方案部分是这样的:

components:
  securitySchemes:
    OpenId:
      type: openIdConnect
      description: Authentication
      openIdConnectUrl: https://login.microsoftonline.com/xxxxxxxxxx/v2.0/.well-known/openid-configuration

我没有找到任何可能性来添加具有如下(或类似)属性的 x-tokenName:

quarkus.smallrye-openapi.security-scheme-extension=tokenName:id_token

实现对应的openapi.yaml像这样:

components:
  securitySchemes:
    OpenId:
      type: openIdConnect
      description: Authentication
      openIdConnectUrl: https://login.microsoftonline.com/xxxxxxxxxx/v2.0/.well-known/openid-configuration
      x-tokenName: id_token

据我所知,这些扩展是 openApi 的一部分,应该可以使用。还是我遗漏了什么?

无法使用配置将 x-* 添加到安全模型(目前)。但我认为这将是一个有效的功能请求,所以请在问题中这样做。

您现在可以做的是创建您自己的过滤器(这就是它的全部内容)。

https://download.eclipse.org/microprofile/microprofile-open-api-1.0/microprofile-openapi-spec.html#_oasfilter

而 Quarkus 中的当前过滤器:https://github.com/quarkusio/quarkus/blob/main/extensions/smallrye-openapi/deployment/src/main/java/io/quarkus/smallrye/openapi/deployment/filter/SecurityConfigFilter.java