(七)、ZooKeeper 授权验证
2016-08-20 23:47
211 查看
1.Zookeeper权限介绍
ZooKeeper 的权限管理亦即 ACL 控制功能通过 Server 、 Client 两端协调完成:Server 端:
一个 ZooKeeper 的节点( znode )存储两部分内容:数据和状态,状态中包含 ACL 信息。创建一个 znode 会产生一个 ACL 列表,列表中每个 ACL 包括:
验证模式 (scheme)
具体内容 (Id) (当 scheme=“digest” 时,Id 为用户名密码,例如 “root :J0sTy9BCUKubtK1y8pkbL7qoxSw=” )
权限 (perms)
1.1 scheme
ZooKeeper 提供了如下几种验证模式( scheme ):digest : Client 端由用户名和密码验证,譬如 user:password , digest 的密码生成方式是 Sha1 摘要的 base64 形式
auth : 不使用任何 id ,代表任何已确认用户。
ip : Client 端由 IP 地址验证,譬如 172.2.0.0/24
world :固定用户为 anyone ,为所有 Client 端开放权限
super :在这种 scheme 情况下,对应的 id 拥有超级权限,可以做任何事情 (cdrwa )
注意的是, exists 操作和 getAcl 操作并不受 ACL 许可控制,因此任何客户端可以查询节点的状态和节点的 ACL 。
1.2 perms
节点的权限( perms )主要有以下几种:Create 允许对子节点 Create 操作
Read 允许对本节点 GetChildren 和 GetData 操作
Write 允许对本节点 SetData 操作
Delete 允许对子节点 Delete 操作
Admin 允许对本节点 setAcl 操作
2.Java代码
2.1、创建时指定用户和密码、schema类型。
<span style="white-space:pre"> </span>private String auth = ""; private List<ACL> acls = null; public ZKOperate(String userName,String password){ try { auth = userName + ":" +password; Id id = new Id("digest",DigestAuthenticationProvider.generateDigest(auth)); ACL acl = new ACL(ZooDefs.Perms.ALL, id); acls = Collections.singletonList(acl); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } }
设置之后,对应操作Zookeeper信息,需要匹配用户名和密码。
相关文章推荐
- Zookeeper开发总结 授权与验证 自动重连 递归删除 事务
- Moss设置表单验证之后,授权的时候找不到Form用户
- 身份验证和授权
- Asp.net中基于Forms验证的角色验证授权
- shiro身份验证和授权
- Dynamics CRM 2015/2016 Web API:验证和授权
- 商务综合管理-day2~5 分页实现,shiro(验证授权,MD5Hash加密),struts2全局异常处理
- Asp.net2.0中基于Forms验证的角色验证授权(2)
- [转]Asp.net中基于Forms验证的角色验证授权
- 如何实现路由器的本地验证以及授权的说明
- Asp.net中基于角色验证授权(转)
- 验证(Authentication)和授权(Authorization)(一):
- Web服务中使用Soap标头自定义身份验证和授权
- web客户端授权验证-proxy
- Asp.net中基于Forms验证的角色验证授权
- asp.net身份验证和授权
- Java企业微信开发_09_身份验证之移动端网页授权(有完整项目源码)
- 淘宝账号基于OAuth2.0的登录验证授权登陆第三方网站
- shiro 验证 授权配置实例
- Asp.net中基于Forms验证的角色验证授权