zookeeper密码权限验证

假定使用账户密码为panxie:123456,那么zookeeper生成的鉴权字段为BASE64(SHA1(panxie+123456)),使用zookeeper自带的工具生成鉴权字段auth,命令为:

java -Djava.ext.dirs=/home/oicq/zkcluster/zk1/lib -cp /home/oicq/zkcluster/zk1/zookeeper-3.4.14.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider panxie:123456

输出结果为:

panxie:123456->panxie:ls2Y30BnQBe3KJYoYp1ylpd7oTo=

对于不存在的节点,使用create创建节点时指定auth,命令为:

create "/auth_test" "hello,world" digest:panxie:ls2Y30BnQBe3KJYoYp1ylpd7oTo=:cdrwa

最后的cdrwa对应的权限表格如下。

至此,访问/auth_test节点之前必须使用命令addauth来完成认证,否则会提示鉴权无效。

[zk: 127.0.0.1:2283(CONNECTED) 3] get /auth_test
Authentication is not valid : /auth_test

addauth使用方法如下:

addauth digest panxie:123456

完后认证后再次访问时成功。

[zk: 127.0.0.1:2283(CONNECTED) 8] get /auth_test                                                   
hello,world
cZxid = 0x1000000e54
ctime = Tue Nov 03 10:05:25 CST 2020
mZxid = 0x1000000e54
mtime = Tue Nov 03 10:05:25 CST 2020
pZxid = 0x1000000e54
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 0