簡體   English   中英

Kafka SASL_PLAINTEXT和用於Gerberos的GSSAPI

[英]Kafka SASL_PLAINTEXT with GSSAPI for kerberos

我正在嘗試使用帶有純文本的SASL和GSSAPI運行單個kafka服務器,但出現以下錯誤。

[2018-10-03 16:08:54,220]錯誤[控制器id = 0,targetBrokerId = 0]由於以下原因,連接到節點0的身份驗證失敗:錯誤:(java.security.PrivilegedActionException:javax.security.sasl.SaslException:評估從Kafka經紀人收到的SASL令牌時,發生GSS啟動失敗[由GSSException引起:未提供有效的憑據]。 Kafka客戶端將進入AUTHENTICATION_FAILED狀態。 (org.apache.kafka.clients.NetworkClient)

在server.properties中的更改是:

listeners=SASL_PLAINTEXT://kafka.example.com:9095
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=GSSAPI
advertised.listeners=SASL_PLAINTEXT://kafka.example.com:9095
sasl.enabled.mechanism=GSSAPI
sasl.kerberos.service.name=HTTP

這是我的Jaas配置:

KafkaServer {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    useTicketCache=true
    storeKey=true
    keyTab="/home/kafka/kafka_server.keytab"
    principal="HTTP/kafka.example.com@UNIX.EXAMPLE.COM";
};

任何線索如何解決這個問題?

首先,使用KeyTab(useKeyTab = true)或使用TicketCache(useTicketCache = true)。 請勿一次使用兩者。 這可能導致沖突。

如果您有自己的Kerb,請為kafka創建一個原則

sudo /usr/sbin/kadmin.local -q 'addprinc -randkey kafka/{hostname}@{REALM}' sudo /usr/sbin/kadmin.local -q "ktadd -k /etc/security/keytabs/{keytabname}.keytab kafka/{hostname}@{REALM}"

采用

sasl.kerberos.service.name="kafka"

設置JVM參數

export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf -Dsun.security.krb5.debug=true"

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM