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

使用librdkafka、OIDC与Azure AD做OAUTHBEARER令牌提供者遇认证错误

解决方案

问题出在你使用了oidc作为OAuthBearer方法,rdkafka的OIDC流程与Azure AD的OAuth2端点不兼容,导致SASL认证阶段解析URI失败。以下是修正步骤:

关键配置调整

  1. 移除或修改sasl.oauthbearer.method:
    Azure Event Hubs Kafka兼容端点仅支持标准OAuth2流程,不需要OIDC特定处理。删除sasl.oauthbearer.method=oidc配置项,或显式设置为oauth2(默认即为oauth2可省略)。

  2. 确认令牌端点URL:
    确保URL中的租户ID(***)已正确替换,v2端点格式为:

    https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
    
  3. 优化Scope设置:
    可以使用更通用的Event Hubs全局scope替代客户端特定scope,避免配置错误:

    https://eventhubs.azure.net/.default
    

修正后的完整配置

conf->set("bootstrap.servers", "myhub.servicebus.windows.net:9093", errstr);
conf->set("security.protocol", "SASL_SSL", errstr);
conf->set("sasl.mechanism", "OAUTHBEARER", errstr);
conf->set("sasl.oauthbearer.client.id", "***", errstr);
conf->set("sasl.oauthbearer.client.secret", "***", errstr);
conf->set("sasl.oauthbearer.token.endpoint.url", "https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token", errstr);
conf->set("sasl.oauthbearer.scope", "https://eventhubs.azure.net/.default", errstr);

错误原因说明

你提到已成功获取令牌,但SASL认证失败,是因为rdkafka的OIDC模式会额外验证令牌中的OIDC特定字段(如issuer URI格式),而Azure AD返回的令牌issuer格式与rdkafka的OIDC解析逻辑不匹配,触发了"Invalid URI"错误。切换到标准OAuth2模式后,rdkafka不会执行这些OIDC特定验证,直接使用令牌完成SASL认证。

额外验证建议

  • 解码获取到的JWT令牌,确认aud字段为https://eventhubs.azure.net或你的客户端ID对应的资源URI
  • 确保Azure AD应用已被授予Event Hubs的访问权限(如Azure Event Hubs Data Sender角色)

内容的提问来源于stack exchange,提问作者Hlib Pylypets

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:30:47