ZooKeeper身份验证错误

时间:2016-02-20 00:52:00

标签: kerberos apache-zookeeper

我尝试使用kerberos登录ZK,然后执行一些操作。 但是,以下不起作用:

2016-02-19 16:31:32,572 [myid:] - INFO  [Thread-1:Login@397] -Initiating re-login for <me/hostname@EXAMPLE.COM>

2016-02-19 16:31:32,588 [myid:] - INFO  [Thread-1:Login@301] - TGT valid starting at:        Fri Feb 19 16:31:32 PST 2016
2016-02-19 16:31:32,588 [myid:] - INFO  [Thread-1:Login@302] - TGT expires:                  Fri Feb 19 16:46:32 PST 2016
2016-02-19 16:31:32,588 [myid:] - INFO  [Thread-1:Login$1@181] - TGT refresh sleeping until: Fri Feb 19 16:43:50 PST 2016

[zk: hostname(CONNECTED) 11] 
[zk: hostname(CONNECTED) 11] getAcl /zk-test
'sasl,'me/hostname@EXAMPLE.COM@: cdrwa
[zk: hostname(CONNECTED) 12] ls /zk-test
Authentication is not valid : /zk-test

即使我已经使用主体me/hostname@EXAMPLE.COM登录,/zk-test的ACL为sasl:me/hostname@EXAMPLE.COM:cdrwa,我仍然无法执行ls /zk-test之类的简单操作。谁知道为什么?感谢。

2 个答案:

答案 0 :(得分:1)

我浪费了一生的时间(感谢文件管理员的文件很差 - 一切都很分散),我想确保没有其他人这样做,谢天谢地知道我们工作场所的一切事情帮助了我;)

在你开始zkCli -server blahblah:2181

之前这样做


    export JVMFLAGS="-Djava.security.auth.login.config=/tmp/jaas.conf -Dsun.net.spi.nameservice.provider.1=dns,sun"


确保你在tmp文件夹中有jaas conf - 我使用过这样的东西 -



     Server {
      org.apache.zookeeper.server.auth.DigestLoginModule required
      user_super="adminsecret"
      user_bob="bobsecret"
      user_dev="devpassword";
    };
    Client{
      org.apache.zookeeper.server.auth.DigestLoginModule required
      username="blah"
      password="blahblah";
    };


它现在可以使用了。

答案 1 :(得分:0)

需要jaas.conf文件:

Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/home/myUser/myUser.keytab"
  storeKey=true
  useTicketCache=false
  principal="myUser@MYREALM.COM";
};

为您当前的会话设置环境变量:

export JVMFLAGS="-Djava.security.auth.login.config=/home/myUser/jaas.conf"

最后连接到服务器:

zookeeper-client -server myServerIp

我写了blog pos t关于这个作为对自己的说明应该更完整。