我试图运行一个单一的Kafka服务器使用sasl和gssapi与明文,但得到以下错误。
[2018-10-03 16:08:54220]错误[controller id=0,targetbrokerid=0]到节点0的连接身份验证失败,原因是:评估从kafka代理接收的sasl令牌时发生错误:(java.security.privilegedactionexception:javax.security.sasl.saslexception:gss initiate failed[由gsseException引起:未提供有效凭据])。Kafka客户端将进入身份验证失败状态(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";
};
关于如何解决这个问题有什么线索吗?
1条答案
按热度按时间hfwmuf9z1#
首先,要么使用keytab(usekeytab=true),要么使用ticketcache(useticketcache=true)。不要同时使用两者。这可能导致冲突。
如果你有自己的路缘,为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"
希望这会有帮助。