我使用的是zookeeper 3.4.12版本,并且在尝试启用SASL时发现以下错误。有人能帮忙吗。
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
useTicketCache=true
keyTab="/tmp/kafka/zookeeper.service.keytab
principal="zookeeper/chefclient.xyz.local@XYZ.LOCAL";
};
错误:
2018-11-02 09:35:01998]错误SASL身份验证使用登录上下文"客户端"失败,出现异常:{}(org.apache.zookeeper.Client.ZooKeeperSaslClient(javax.security.sasl.SaslException:与Zookeeper Quorum成员进行身份验证时出错:Quorum成员的saslToken为空
问题已修复,jaas中的空格导致问题
Zookeeper安全的第一步是确保quorum对等通信的安全。请在此处完整解释。
你的Zookeeper jaas文件应该有QuorumServer和QuorumLearner部分。
接下来,您可以像Kafka一样保护Zookeeper集群和客户端之间的通信。
您在Zookeeper jaas文件中添加了Server部分,您的Kafka jaas文件应该有Client区域
我认为问题是,中缺少一个双引号
keyTab="/tmp/kafka/zookeeper.service.keytab
我遇到了同样的问题。。。
SaslException: Error in authenticating with a Zookeeper Quorum member: the quorum member's saslToken is null
这个错误也出现在Zookeeper服务器日志中:
ERROR [NIOWorkerThread-6:ZooKeeperServer@1191] - cnxn.saslServer is null: cnxn object did not initialize its saslServer properly.
我的配置,使用zookeeper实例之间的相互kerberos身份验证。
解决方案
缺少"服务器"部分
我的问题是,在Zookeeper的服务器jaas配置中没有Server
部分。
我需要类似的东西:
QuorumServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/etc/security/keytabs/zookeeper.keytab"
storeKey=true
useTicketCache=false
debug=false
principal="zookeeper/zk1.example.com@EXAMPLE.COM";
};
QuorumLearner {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/etc/security/keytabs/zookeeper.keytab"
storeKey=true
useTicketCache=false
debug=false
principal="zookeeper/zk2.example.com@EXAMPLE.COM";
};
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/etc/security/keytabs/zookeeper.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/zk3.example.com@EXAMPLE.COM";
};
当客户端连接到Zookeeper时,他们将根据该配置的Server
部分进行身份验证。这是SASL工作所必需的。
还要确保你有conf/java.env
设置类似于:
SERVER_JVMFLAGS="${SERVER_JVMFLAGS} -Djava.security.auth.login.config=/opt/zookeeper/conf/server-jaas.conf"
CLIENT_JVMFLAGS="${CLIENT_JVMFLAGS} -Djava.security.auth.login.config=/opt/zookeeper/conf/client-jaas.conf"