zookeeper使用ACL进行权限控制C++
2013-09-30 18:32
846 查看
C++中对zookeeper节点进行ACL权限控制资料少,让人误解。
其中对于希望使用的用户名、密码分别为user,passwd时:
ACL的id中保存的字符串为user:base64encode(sha1(user:passwd))
其中编码为:单字符8位,字符集为ASCII
在java中有DigestAuthenticationProvider.java模块插件可以进行此加密:
对应加密函数
在zkCli.sh命令行中:
创建节点create -s /test null digest:test:V28q/NynI4JI3Rk54h0r8O5kMug=:rwcda
让zookeeper知道自己的权限addauth digest test:test
获取节点数据get /test
<!-- lang: cpp --> zhandle_t *zk = zookeeper_init("127.0.0.1:5555", NULL, 10000, 0, NULL, 0); char buffer[512]; char scheme[10]="digest"; char usr_pa[100]="test:V28q/NynI4JI3Rk54h0r8O5kMug="; struct ACL_vector aclv; aclv.count=1; struct ACL acl; acl.perms = ZOO_PERM_ALL; acl.id.scheme = scheme; acl.id.id = usr_pa; aclv.data = &acl; zoo_create(zk, "/mynode", "cluster", strlen("cluster"), &aclv, 0, buffer, sizeof(buffer)-1); zoo_add_auth(zk,"digest","test:test",7,NULL,NULL); memset(buffer,0,sizeof(buffer)); int buflen= sizeof(buffer); struct Stat stat; int rc = zoo_get(zk, "/mynode", 0, buffer, &buflen, &stat); if (rc) { fprintf(stderr, "zoo_get Error %d for %d\n", rc, __LINE__); } printf("get buffer: %s\n", buffer); rc = zoo_delete(zk, "/mynode", -1); if (rc) { fprintf(stderr, "zoo_delete Error %d for %d\n", rc, __LINE__); } sleep(1000000);
其中对于希望使用的用户名、密码分别为user,passwd时:
ACL的id中保存的字符串为user:base64encode(sha1(user:passwd))
其中编码为:单字符8位,字符集为ASCII
在java中有DigestAuthenticationProvider.java模块插件可以进行此加密:
对应加密函数
<!-- lang: java --> static public String generateDigest(String idPassword) throws NoSuchAlgorithmException { String parts[] = idPassword.split(":", 2); byte digest[] = MessageDigest.getInstance("SHA1").digest( idPassword.getBytes()); return parts[0] + ":" + base64Encode(digest); }
在zkCli.sh命令行中:
创建节点create -s /test null digest:test:V28q/NynI4JI3Rk54h0r8O5kMug=:rwcda
让zookeeper知道自己的权限addauth digest test:test
获取节点数据get /test
相关文章推荐
- 基于Kafka 0.9版本 使用ACL进行权限控制
- 使用Zend_Auth和Zend_Acl进行登录认证及根据用户角色进行权限控制
- ZooKeeper使用ACL进行访问控制
- 使用ZooKeeper ACL特性进行znode控制
- 使用Zend_Auth和Zend_Acl进行登录认证及根据用户角色进行权限控制
- zookeeper使用acl进行访问控制
- 使用ZooKeeper ACL特性进行znode控制
- 基于Kafka 0.9版本 使用ACL进行权限控制
- ZooKeeper ACL权限控制
- java编程中使用二进制进行权限或状态控制
- struts2如何使用拦截器进行用户权限控制实例
- Zookeeper入门之使用curator连接zookeeper并且进行节点的增删改查及ACL
- 使用JavaEE的ServerAuthModule模块和web.xml进行相应配置,实现对用户的权限控制
- 使用Spring Security进行用户权限控制
- ZooKeeper设置ACL权限控制
- 批量创建用户并使用sudo和ACL来控制用户权限
- ZooKeeper设置ACL权限控制
- 使用SpringMVC创建Web工程并使用SpringSecurity进行权限控制的详细配置方法
- ssh项目整合shiro时,在struts2的action中使用shiro的注解进行权限控制时,NoSuchMethodException:com.sun.proxy.$Proxy26
- 使用Hadoop ACL 控制访问权限