博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zookeeper 内建ACL访问控制权限代码
阅读量:7218 次
发布时间:2019-06-29

本文共 1894 字,大约阅读时间需要 6 分钟。

  hot3.png

这里我只用了基于用户名密码的digest 模式,还有world  auth  ip 三种模式

ZooKeeper有下列内建模式:

  • world  有独立id,anyone,代表任何用户。

  • auth 不使用任何id,代表任何已经认证过的用户

  • digest 之前使用了格式为username:pathasowrd的字符串来生成一个MD5哈希表作为ACL ID标识。在空文档中发送username:password来完成认证。现在的ACL表达式格式为username:base64, 用SHA1编码密码。

  • ip 用客户端的ip作为ACL ID标识。ACL表达式的格式为addr/bits,addr中最有效的位匹配上主机ip最有效的位。

    可以根据自己的需要自己进行选择使用

@Test	public void test() throws IOException, InterruptedException, KeeperException, NoSuchAlgorithmException {		/**		 * 连接zookeeper		 */			zk = new ZooKeeper("localhost:2182", 5000, new Watcher() {				public void process(WatchedEvent event) {					if (event.getType() == EventType.NodeChildrenChanged && ("/" + groupNode).equals(event.getPath())) {						try {							System.out.println("此处监听");						} catch (Exception e) {							e.printStackTrace();						}					}				}			});			while(zk.getState() != ZooKeeper.States.CONNECTED ){				Thread.sleep(3000);			}			//zk链接的用户			zk.addAuthInfo("digest", "admin:admin123".getBytes());			//创建开放节点,允许任意操作			zk.create("/xxx", "xxx".getBytes("utf-8"), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);			//创建只读节点			zk.create("/yyy", "yyy".getBytes("utf-8"), Ids.READ_ACL_UNSAFE, CreateMode.PERSISTENT);			//创建者全部权限			zk.create("/zzzs", "zzz".getBytes("utf-8"), Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);			//设置访问权限列表			List
lists = new ArrayList
(); Id id1 = new Id("digest", DigestAuthenticationProvider.generateDigest("admin:admin123")); Id id3 = new Id("digest", DigestAuthenticationProvider.generateDigest("readadmin:admin123")); lists.add(new ACL(ZooDefs.Perms.CREATE,id1)); //创建权限 lists.add(new ACL(ZooDefs.Perms.READ,id3)); //只读权限 //testa 节点将根据权限列表进行acl zk.create("/testa", "testacl".getBytes("utf-8"), lists, CreateMode.PERSISTENT); byte[] value = zk.getData("/testa", null, new Stat()); System.out.println(value); }

转载于:https://my.oschina.net/UpBoy/blog/420115

你可能感兴趣的文章
随笔2013/2/13
查看>>
笨办法32循环和列表
查看>>
java序列化
查看>>
谈谈NITE 2的第一个程序HandViewer
查看>>
VS2008 未响应 假死
查看>>
html5、css3及响应式设计入门
查看>>
Win10還原成最乾淨的狀態
查看>>
Java_InvokeAll_又返回值_多个线程同时执行,取消超时线程
查看>>
SaltStack作业
查看>>
单例设计
查看>>
springboot+缓存
查看>>
/*10个filter的属性*/ ---毛玻璃效果
查看>>
折半查找习题解答
查看>>
51单片机的P1
查看>>
[32]JSON
查看>>
3689: 异或之
查看>>
字符串模式匹配KMP算法
查看>>
Android Drawable和Bitmap图片之间转换
查看>>
Debian 8 安装 Nvidia 显卡驱动
查看>>
nginx静态文件访问
查看>>