我在服务器上连接kafka时遇到问题...
我在Linux服务器上使用kafka(使用Kerberos),通过添加配置keytab,principal(jaas config)连接到它的java客户端,现在我需要向c#app添加类似的配置,这将生成一些消息给卡夫卡。 C#app可以在Windows机器上运行。
C#app正在使用Confluent.Kafka,与没有kerberos auth的kafka的连接非常简单,我喜欢这样做 https://github.com/confluentinc/confluent-kafka-dotnet
但现在我需要将其配置为连接到安全的env ...
那么如何配置将使用现有keytab文件和主体的连接?
我在java中看到了很多例子,但在C#
中没有类似问题的例子如果有任何提示可以进一步解决我的问题,我将不胜感激
//更新
当我使用如下配置时,它开始工作:
config = new Dictionary<string, object>
{
{"bootstrap.servers", KAFKA_BROKER_SERVERS},
{"api.version.request", "true"},
{"security.protocol", "SASL_PLAINTEXT"},
{"sasl.kerberos.service.name", "kafka"},
{"sasl.kerberos.principal", "myPrincaipal@REALM"},
{"debug", "security,broker,protocol"}
};
答案 0 :(得分:2)
confluent-kafka-dotnet(或者更确切地说是librdkafka,底层的Kafka客户端实现)将使用Windows本机SSPI在Windows上进行Kerberos身份验证。 这意味着您将无法使用keytabs等,而是依赖Windows AD上已登录的用户凭据。
这里有一个社区贡献指南: https://github.com/edenhill/librdkafka/wiki/Using-SASL-with-librdkafka-on-Windows