
本文详解 Quarkus 2 中因缺失 OIDC 客户端配置或依赖导致 CompositeAuthenticationProvider 注入失败的问题,提供完整的修复步骤、依赖声明与配置要点。
本文详解 quarkus 2 中因缺失 oidc 客户端配置或依赖导致 `compositeauthenticationprovider` 注入失败的问题,提供完整的修复步骤、依赖声明与配置要点。
在 Quarkus 2.x 应用中,当使用 OpenAPI Generator 生成的 REST 客户端并集成 OIDC 认证(如通过 CompositeAuthenticationProvider 及其内部 OidcClientRequestFilterDelegateImpl)时,若出现类似以下错误:
Error injecting gen.apis.project.external.v1.api.auth.CompositeAuthenticationProvider$OidcClientRequestFilterDelegateImpl0 gen.apis.project.external.v1.api.auth.CompositeAuthenticationProvider.oidcClientRequestFilterDelegate0
这明确表明 Quarkus 的 CDI 容器无法创建或注入 OIDC 客户端相关组件——根本原因通常是 OIDC 客户端功能未被启用,而非配置本身语法错误。
✅ 正确解决步骤
1. 添加必需依赖
确保 pom.xml 中已声明 quarkus-oidc-client 扩展(注意:不是 quarkus-oidc,后者用于服务端认证):
<dependency><groupid>io.quarkus</groupid><artifactid>quarkus-oidc-client</artifactid></dependency>
⚠️ 注意:
quarkus-oidc-client是客户端模式专用扩展,提供OidcClient,OidcClientRequestFilter等核心能力;缺少它将导致所有 OIDC 客户端相关 Bean(包括生成代码中引用的OidcClientRequestFilterDelegateImpl)无法被注册和注入。
2. 配置 OIDC 客户端参数
仅添加依赖仍不足够,必须在 application.properties 中启用并配置 OIDC 客户端。至少需指定以下基础属性:
由夸克扫描王提供的文件格式转换工具。当用户需要将图片、截图或扫描件转换为 Office 文档(Word/Excel)或 PDF 时,使用此技能。适用于包含复杂表格、合同或图文混排内容的图片或扫描件,可尽量还原原始版式并生成可编辑文档。即使用户未明确提到格式转换,只要用户的需求涉及将图片内容转换为可编辑文档(如 .docx、.xlsx 或 .pdf),也应触发此技能。请勿用于提取纯文本或识别文字内容、图像增强处理或从零创建文档
# 启用 OIDC 客户端(关键!) quarkus.oidc-client.enabled=true # 配置授权服务器元数据地址(推荐使用 .well-known) 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 # 可选:指定 token 获取方式(默认 client-secret) quarkus.oidc-client.authentication-scopes=openid,profile
? 提示:若调用的是公有 API(如无需 client secret),可设
quarkus.oidc-client.authentication-method=client-secret或none(根据服务端支持情况调整);但enabled=true是强制前提。
3. 验证生成客户端是否正确关联
OpenAPI Generator 生成的 CompositeAuthenticationProvider 会自动尝试注入 OidcClientRequestFilterDelegateImpl ——该类由 quarkus-oidc-client 扩展自动注册。因此,只要上述依赖与配置就绪,无需手动注册或修改生成代码。
4. 排查常见误区
- ❌ 错误:仅添加
quarkus-oidc(服务端 OIDC)→ 不提供客户端过滤器,注入必然失败。 - ❌ 错误:遗漏
quarkus.oidc-client.enabled=true→ 即使有依赖,扩展也不会激活。 - ❌ 错误:
client-id或auth-server-url配置为空或无效 → 启动时可能无报错,但运行时注入失败(日志中常伴随Unable to create instance for ...)。
✅ 总结
该问题本质是 Quarkus OIDC 客户端功能未激活所致。务必同步满足三个条件:
① 引入 quarkus-oidc-client 依赖;
② 在 application.properties 中启用并正确配置 quarkus.oidc-client.* 属性;
③ 确保生成的客户端代码未覆盖或屏蔽默认认证委托链。
完成配置后重启应用,CompositeAuthenticationProvider 将能成功注入 OidcClientRequestFilterDelegateImpl,外部 API 调用即可携带有效 OIDC Token。










