我正在使用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:01,998]使用登录上下文'Client'的错误SASL身份验证失败,但异常:{}(org.apache.zookeeper.client.ZooKeeperSaslClient) javax.security.sasl.SaslException:使用Zookeeper法定成员进行身份验证时出错:法定成员的saslToken为null
答案 0 :(得分:0)
我认为问题是,您在
处缺少双引号keyTab="/tmp/kafka/zookeeper.service.keytab
答案 1 :(得分:0)
Zookeeper安全性的第一步是保护仲裁对等方的通信。完整的说明here。
您的Zookeeper jaas文件应具有 QuorumServer 和 QuorumLearner 部分。
接下来,您可以保护Zookeeper群集和客户端之间作为Kafka的通信。完整说明here
您在Zookeeper jaas文件中添加了服务器部分,而您的Kafka jaas文件应具有 Client 部分
答案 2 :(得分:0)
问题已解决,jaas中的空格导致了问题
答案 3 :(得分:0)
我遇到了同样的问题...
SaslException: Error in authenticating with a Zookeeper Quorum member: the quorum member's saslToken is null
Zookeeper Server日志中也存在此错误:
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"