You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus中配置Swagger UI仅展示Implicit认证流

只在Quarkus Swagger UI展示Implicit认证流的配置方法

要实现只显示implicit流、隐藏其他认证流,需要通过自定义SmallRye OpenAPI安全方案并禁用Quarkus OIDC自动生成的默认安全方案,具体配置如下:

1. 禁用OIDC自动生成的安全方案

Quarkus OIDC扩展默认会根据Keycloak配置生成包含所有支持流的OpenAPI安全方案,先在配置文件中禁用这个自动生成逻辑:

quarkus:
  oidc:
    openapi:
      security-scheme: disabled

2. 自定义只含Implicit流的安全方案

在application.yaml中配置SmallRye OpenAPI的安全方案,明确指定仅使用implicit流,并关联Keycloak的授权端点:

quarkus:
  smallrye-openapi:
    security-schemes:
      KeycloakImplicit:
        type: oauth2
        flows:
          implicit:
            # 复用OIDC配置的授权服务器地址,自动拼接授权端点
            authorizationUrl: ${quarkus.oidc.auth-server-url}/protocol/openid-connect/auth
            # 可选:添加客户端需要的权限范围
            scopes:
              openid: 基础身份认证
              email: 获取用户邮箱信息
    # 全局应用该安全方案(也可在单个API接口上通过注解指定)
    security:
      - KeycloakImplicit: [openid]

3. (可选)给特定API接口绑定安全方案

如果不需要全局应用,可在需要授权的接口上使用@Security注解指定自定义的安全方案:

import org.eclipse.microprofile.openapi.annotations.security.Security;

@GET
@Path("/private-data")
@Security(name = "KeycloakImplicit", scopes = {"openid"})
public String getPrivateData() {
    return "仅授权用户可见的内容";
}

4. 验证Keycloak客户端配置

确保Keycloak后台的对应客户端已启用Implicit流:

  • 进入Keycloak后台 → 目标Realm → 客户端 → 你的客户端
  • 在"Settings"标签将Access Type设为public(Implicit流适配公共客户端场景)
  • 在"Authentication Flow Overrides"标签,启用Implicit Flow,同时禁用不需要的流(如Password、Client Credentials)

完成以上配置后,重启Quarkus应用,打开Swagger UI就能看到仅展示Implicit认证流的授权选项了。

内容的提问来源于stack exchange,提问作者JaB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:52:35