如何使用 C#/C++/librdkafka 与 OIDC 和 Azure AD 作为 apache kafka 中 OAUTHBEARER 的令牌提供程序?

问题描述 投票:0回答:1

我尝试使用 C# 向 Apache Kafka 生成消息。但我注意到有一个名为 sasl.login.callback.handler.class 的配置,应该在 kafka 生产者客户端中配置。但我找不到合适的地方来配置它。有人可以帮忙吗?非常感谢!

我注意到使用 C# 的生产者客户端与 C++/librdkafka 相关。所以我将它们添加到标题中。我找不到 librdkafka 中的 sasl.login.callback.handler.class(https://github.com/confluenceinc/librdkafka/blob/master/CONFIGURATION.md)。

这是我的配置:

private ProducerConfig _config = new ProducerConfig();
_config.BootstrapServers = server;
_config.ClientId = clientId;
_config.SecurityProtocol = SecurityProtocol.SaslPlaintext;
_config.SaslMechanism = SaslMechanism.OAuthBearer;
_config.SaslOauthbearerClientId = "MyClientId";
_config.SaslOauthbearerClientSecret = "MyClientSecret";
_config.SaslOauthbearerScope = "ServerClientId/.default";
_config.SaslOauthbearerTokenEndpointUrl = "https://login.microsoftonline.com/MyTenantId/oauth2/v2.0/token";

需要找到一个使用 C#/C++ 的解决方案来生成带有 OAuth AAD 令牌的消息到 Apache Kafka。

apache-kafka oauth-2.0 oauth azure-active-directory producer-consumer
1个回答
0
投票

我找到了解决方案。

librdkafka不需要设置sasl.login.callback.handler.class但需要设置 sasl.oauthbearer.method 到 OIDC。

我已经使用 C# 进行了测试,它可以工作。

这是我关于 OAuth AAD 的配置:

private ProducerConfig producerConfig = new ProducerConfig();
producerConfig.SaslMechanism = SaslMechanism.OAuthBearer;
producerConfig.SecurityProtocol = SecurityProtocol.SaslPlaintext;
producerConfig.SaslOauthbearerMethod = SaslOauthbearerMethod.Oidc;
producerConfig.SaslOauthbearerClientId = YourClientId;
producerConfig.SaslOauthbearerClientSecret = YourClientSecret;
producerConfig.SaslOauthbearerScope = "ServerTenantId/.default";
producerConfig.SaslOauthbearerTokenEndpointUrl = "https://login.microsoftonline.com/YourTenantId/oauth2/v2.0/token";
© www.soinside.com 2019 - 2024. All rights reserved.