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

Quarkus中Swagger UI集成OIDC后请求未携带Bearer token如何解决?

问题根因

你已经正确配置了OIDC安全方案和Swagger UI的授权跳转逻辑,但没有将定义好的OIDC安全方案绑定到需要鉴权的API端点,因此Swagger UI不会自动在请求头中添加Bearer Token。

修复步骤

方案1:全局绑定安全方案(推荐)

在application.properties中添加以下配置,将你定义的名为Keycloak的安全方案应用到所有接口:

quarkus.smallrye-openapi.security-requirement=Keycloak

配置后所有需要鉴权的接口会自动关联该安全方案,Swagger UI授权后会自动携带Token。

方案2:单独给指定接口绑定

如果不需要全局生效,可以在对应的资源类或接口方法上添加@SecurityRequirement注解:

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

@Path("/health")
@Authenticated
@SecurityRequirement(name = "Keycloak") // 此处name要和你配置的security-scheme-name完全一致
public class ReactiveHealthResource {
    // 原有代码保持不变
}

额外校验项

如果完成上述配置后仍有问题,检查以下配置:

  • 确认Keycloak中对应客户端的Standard Flow Enabled已开启,且客户端类型为public(Swagger UI是前端应用,无法存储客户端密钥)
  • 授权时在Swagger UI的弹框中勾选openid scope,否则OIDC流程不会返回合法的身份Token
  • 如果Keycloak强制要求PKCE校验,在配置文件中添加:
quarkus.swagger-ui.oauth.use-pkce-with-authorization-code-grant=true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:33:03