如何使用Kerberos

时间:2018-02-05 11:24:26

标签: c# apache-kafka kerberos kafka-producer-api confluent-kafka

我在服务器上连接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"}
        };

1 个答案:

答案 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