Zookeeper示例之访问权限控制

上一篇 << 下一篇 >>>Zookeeper示例之服务发现与治理


Zookeeper可以对节点进行设置权限,
zookeeper的认证方式包括:

  • world:默认方式,相当于全世界都能访问
  • auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
  • digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
  • ip:使用Ip地址认证

Zookeeper的权限类型包括:

  • CREATE: 能创建子节点
  • READ:能获取节点数据和列出其子节点
  • WRITE: 能设置节点数据
  • DELETE: 能删除子节点
  • ADMIN: 能设置权限

1、服务端控制

/**
 * 创建账号权限 admin可以实现读写操作
 */
Id id1 = new Id("digest", DigestAuthenticationProvider.generateDigest("admin:admin123"));
ACL acl1 = new ACL(ZooDefs.Perms.ALL, id1);
/**
 * 创建权限guest 只允许做读操作
 */
Id id2 = new Id("digest", DigestAuthenticationProvider.generateDigest("guest:guest123"));
ACL acl2 = new ACL(ZooDefs.Perms.READ, id2);

ArrayList aces = new ArrayList();
aces.add(acl1);
aces.add(acl2);

String s1 = zooKeeper.create("/memberservice", "jarye".getBytes(), aces, CreateMode.PERSISTENT);
System.out.println("s1:" + s1);

2、客户端访问

//设置访问认证
zooKeeper.addAuthInfo("digest", "guest:guest123".getBytes());
byte[] bytes = zooKeeper.getData("/memberservice", null, new Stat());
String string = new String(bytes);
System.out.println(string);

推荐阅读:
<< << << << <<<为什么Zookeeper集群节点一定要是奇数
<< << << << << << << << << << << << <<

你可能感兴趣的:(Zookeeper示例之访问权限控制)