gpt4 book ai didi

c++ - 如何将 librdkafka 与 OIDC 和 Azure AD 结合使用作为 OAUTHBEARER 的 token 提供程序?

转载 作者:行者123 更新时间:2023-12-02 23:00:33 34 4
gpt4 key购买 nike

问题

我想将 Kafka OIDC 与 Azure AD 结合使用作为 token 提供程序,但我遇到了一些奇怪的错误。

我已经阅读了许多 azure 文档页面并尝试了 https://github.com/Azure/azure-event-hubs-for-kafka 中的示例。 - 当我使用 python 和 C++ 进行测试时,所有这些都对我有用。包括 https://github.com/Azure/azure-event-hubs-for-kafka/tree/master/tutorials/oauth/python 中列出的 oauth(使用 Azure AD)示例

错误

当我尝试使用 https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-protocols-oidc 后面的已注册应用程序网页中的凭据时并使用 v2 端点,我最终得到 ERROR|rdkafka# Producer-1 | [thrd:app]: rdkafka# Producer-1: sasl_ssl://myhub.servicebus.windows.net:9093/bootstrap: SASL 身份验证错误: 无效的 URI: 无法确定 URI 的格式。 (处于 AUTH_REQ 状态 272 毫秒后)。对于没有范围的 v1,错误类似 - FAIL|rdkafka# Producer-1 | [thrd:sasl_ssl://myhub.servicebus.windows.net:9093/bootstrap]: sasl_ssl://myhub.servicebus.windows.net:9093/bootstrap: SASL 身份验证错误: 无效的 URI: URI 的格式无法被确定。 (在 AUTH_REQ 状态 259 毫秒后)。

设置

同样,我测试的所有现有示例都适合我,但没有一个使用 OIDC。我使用的配置如下 - 我应该在 sasl.oauthbearer.token.endpoint.urlsasl.oauthbearer.config 中使用什么来完成这项工作?

    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.method", "oidc", 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/***/oauth2/v2.0/token", errstr);
conf->set("sasl.oauthbearer.scope", "api://***/.default", errstr);

链接

Confluence Kafka OIDC - https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=186877575

C++ librdkafka OIDC - https://github.com/edenhill/librdkafka/blob/b871fdabab84b2ea1be3866a2ded4def7e31b006/src/rdkafka_sasl_oauthbearer_oidc.c#L242

Github 问题 - https://github.com/Azure/azure-event-hubs-for-kafka/issues/223

编辑:

使用 debug=all 进行进一步调试显示,应用程序在 SASL 身份验证序列上失败时收到了 OAUTHBEARER token 。

SASL OAUTHBEARER client in state client-first-message
Send SASL Kafka frame to broker
Sent SaslAuthenticateRequest

Received SaslAuthenticateResponse
Invalid URI: The format of the URI could not be determined.

最佳答案

好的,Azure 回应说 Kafka OIDC 没有在他们这边进行测试,并且可能不受代理支持。

但我测试了它可以与 Kafka OIDC 配合使用 - 我很快就会向他们的存储库贡献示例。

问题是使用注册应用程序的范围(api://{app-id}/.default)与命名空间的范围(https://myhub.servicebus. windows.net/.default) - 后一个是正确的。

这反过来又导致接收到错误的 token 类型和无效的 URI 格式 - 这里真正有帮助的是来自 confluence-kafka 的示例,不涉及任何 azure 依赖项 https://github.com/confluenceinc/confluence-kafka-python/blob/master/examples/oauth_ Producer.py

关于c++ - 如何将 librdkafka 与 OIDC 和 Azure AD 结合使用作为 OAUTHBEARER 的 token 提供程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74643469/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com