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

Spring Boot中如何为Swagger UI的OIDC认证添加Client ID?

解决Swagger UI对接Keycloak OIDC时Client ID为空的问题

你遇到的问题根源是当前的OpenAPI配置只指定了OIDC发现端点,但没提供Swagger UI发起授权请求必需的客户端ID参数,导致跳转Keycloak时client_id为空,触发“Client not found”错误。

修改OpenApiConfiguration配置类

需要在SecurityScheme中补充OAuth2授权流的配置,明确指定客户端ID,同时可以配置授权和令牌端点(也可依赖OIDC发现自动获取,但显式配置更稳定)。修改后的代码如下:

@Bean
public OpenAPI customOpenAPI() {
    return new OpenAPI()
            .components(new Components()
                    .addSecuritySchemes("open-id",
                            new SecurityScheme()
                                    .type(SecurityScheme.Type.OPENIDCONNECT)
                                    .openIdConnectUrl("https://doma.in/auth/realms/realm/.well-known/openid-configuration")
                                    // 添加OAuth2授权码流配置,指定客户端ID
                                    .flows(new OAuthFlows()
                                            .authorizationCode(new OAuthFlow()
                                                    .clientId("你的Swagger客户端ID") // 替换为Keycloak中创建的客户端ID
                                                    .authorizationUrl("https://doma.in/auth/realms/realm/protocol/openid-connect/auth")
                                                    .tokenUrl("https://doma.in/auth/realms/realm/protocol/openid-connect/token")
                                            )
                                    )
                    )
            )
            .addSecurityItem(new SecurityRequirement().addList("open-id"));
}

额外注意事项

  • 确保Keycloak中已创建对应客户端,访问类型建议设为public(Swagger UI属于前端应用,无需客户端密钥)
  • 客户端的重定向URI必须包含Swagger UI的回调地址,例如http://localhost:8080/swagger-ui/oauth2-redirect.html(根据你的实际端口和路径调整)
  • 重启Spring Boot应用后,再次点击Swagger UI的授权锁,选择对应选项即可正常跳转Keycloak完成授权

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:04:54