
本文详解 Quarkus 2 中因缺失 OIDC 客户端配置或依赖导致 CompositeAuthenticationProvider 注入失败的问题,提供完整的依赖添加、配置设置及验证步骤。
本文详解 quarkus 2 中因缺失 oidc 客户端配置或依赖导致 `compositeauthenticationprovider` 注入失败的问题,提供完整的依赖添加、配置设置及验证步骤。
在 Quarkus 应用中使用 OpenAPI 生成的 REST 客户端调用外部受 OIDC 保护的 API 时,若出现类似以下错误:
REST api call failed, Error injecting gen.apis.project.external.v1.api.auth.CompositeAuthenticationProvider$OidcClientRequestFilterDelegateImpl0 gen.apis.project.external.v1.api.auth.CompositeAuthenticationProvider.oidcClientRequestFilterDelegate0
这表明 Quarkus 无法成功注入 OIDC 相关组件(如 OidcClientRequestFilterDelegateImpl),根本原因通常是 OIDC 客户端功能未被启用 —— 即缺少必要依赖或未配置 quarkus.oidc 属性。
✅ 正确解决方案
1. 添加 quarkus-oidc-client 依赖
该模块提供客户端模式下的 OIDC 支持(如令牌获取、请求头自动注入),是 CompositeAuthenticationProvider 正常工作的前提。请确保 pom.xml 中包含:
<dependency><groupid>io.quarkus</groupid><artifactid>quarkus-oidc-client</artifactid></dependency>
⚠️ 注意:
quarkus-oidc(服务端 OIDC)与quarkus-oidc-client(客户端 OIDC)功能不同,不可互相替代。此处必须使用后者。
2. 配置基础 OIDC 客户端参数
仅添加依赖仍不足够,还需在 application.properties 中声明最小化 OIDC 客户端配置,例如:
由夸克扫描王提供的文件格式转换工具。当用户需要将图片、截图或扫描件转换为 Office 文档(Word/Excel)或 PDF 时,使用此技能。适用于包含复杂表格、合同或图文混排内容的图片或扫描件,可尽量还原原始版式并生成可编辑文档。即使用户未明确提到格式转换,只要用户的需求涉及将图片内容转换为可编辑文档(如 .docx、.xlsx 或 .pdf),也应触发此技能。请勿用于提取纯文本或识别文字内容、图像增强处理或从零创建文档
# 启用 OIDC 客户端(必需) quarkus.oidc-client.enabled=true # 指定授权服务器地址(根据实际环境调整) quarkus.oidc-client.auth-server-url=https://auth.example.com/auth/realms/myrealm # 客户端 ID(需与授权服务器注册一致) quarkus.oidc-client.client-id=my-external-api-client # 客户端密钥(若为 confidential client) quarkus.oidc-client.credentials.secret=your-client-secret # 可选:指定作用域(如需要访问令牌权限) quarkus.oidc-client.scope=openid profile email
? 提示:若目标 API 使用公钥认证(public client),可省略
credentials.secret;但auth-server-url和client-id始终为必填项。
3. 验证 OpenAPI 客户端是否正确集成 OIDC 过滤器
确认生成的客户端类(如 CompositeAuthenticationProvider)所引用的 OidcClientRequestFilterDelegateImpl 已被 Quarkus 自动注册。可通过启动日志搜索 OidcClientRequestFilter 或检查 /q/dev/io.quarkus.quarkus-oidc-client Dev UI 页面验证客户端状态。
4. 排查常见陷阱
- ❌ 错误地引入了
quarkus-oidc(服务端)而遗漏quarkus-oidc-client; - ❌
quarkus.oidc-client.enabled=false或未显式设为true(默认为false); - ❌
application.properties中拼写错误(如quarkus.oidc-client.auth-server-url写成quarkus.oidc.auth-server-url); - ❌ OpenAPI 生成器配置中
client-headers-factory=none禁用了所有请求头工厂——应改为oidc或移除该行以启用默认 OIDC 头注入。
完成上述配置后重启应用,CompositeAuthenticationProvider 将能正常注入并自动为每个请求附加 Authorization: Bearer <token></token> 头,彻底解决注入异常问题。










