Quarkus下Swagger UI对接Keycloak跳转登录失败及配置识别问题
问题1:实现Swagger UI跳转Keycloak登录的方案
你遇到的问题是配置错误和缺失必要参数导致的,按以下步骤修改即可实现跳转效果:
- 修正重复配置项
你当前的application.properties中quarkus.swagger-ui.oauth2-redirect-url重复配置了两次,后一条值http://localhost:8080/q/swagger-ui会覆盖正确的回调地址,请删除重复的错误配置,仅保留正确的回调地址:
quarkus.swagger-ui.oauth2-redirect-url=http://localhost:8080/q/swagger-ui/oauth2-redirect.html
- 补充缺失的Swagger UI授权配置
添加以下配置指定授权流、禁用不需要的授权模式,同时配置Keycloak客户端信息:
# OpenAPI安全方案原有配置保留 quarkus.smallrye-openapi.security-scheme=oidc quarkus.smallrye-openapi.security-scheme-name=Keycloak quarkus.smallrye-openapi.oidc-open-id-connect-url=http://localhost:8888/auth/realms/myrealm/.well-known/openid-configuration # 替换为你在Keycloak中创建的公开客户端ID quarkus.swagger-ui.oauth.client-id=你的Keycloak客户端ID # 开启授权码流PKCE校验,适配Keycloak安全要求 quarkus.swagger-ui.oauth.use-pkce-with-authorization-code-grant=true # 禁用所有不需要的授权模式,点击Authorize后会直接走跳转登录流程 quarkus.swagger-ui.oauth2-client-credentials-enabled=false quarkus.swagger-ui.oauth2-password-enabled=false quarkus.swagger-ui.oauth2-implicit-enabled=false # 可选配置:指定请求的授权scope,按需添加 quarkus.swagger-ui.oauth.scopes=openid,profile
- 调整Keycloak客户端配置
在Keycloak对应的客户端设置中,将http://localhost:8080/q/swagger-ui/oauth2-redirect.html添加到有效重定向URI列表,同时将http://localhost:8080添加到Web源列表避免跨域拦截。
修改完成后重启Quarkus应用,点击Swagger UI的Authorize按钮就会直接跳转Keycloak登录页,无需选择授权模式。
问题2:IntelliJ标记Swagger配置为未使用的原因
这是IntelliJ Quarkus插件的配置元数据覆盖不全导致的误报,你填写的所有配置都是Quarkus官方支持的有效参数,不会影响实际运行。
如果要消除提示可以做以下操作:
- 升级IntelliJ及Quarkus插件到最新版本,高版本已经补全了大部分swagger-ui配置的元数据识别
- 手动在IntelliJ中忽略对应配置项的未使用提示即可
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

