客户端好像不支持鉴权部分的api
sgroschupf 的zkClient是支持授权的api ,好像这个client 去掉了?
实际环境中,通常这个比较简单的密码验证用处不大,而且存储这个密码也是一个安全隐患,因此大多数环境(内网可信网络)都没有使用密码验证逻辑。
如果你有兴趣可以简单改造下ZkConnection来支持密码验证。
另外,打一个小广告,我们公司在招聘Java工程师的创业伙伴,如果你有兴趣,可以与我进一步沟通。欢迎加入。
可以参考taobao简单封装的逻辑,sgroschupf版本的zkclient是不带认证的,尽管这非常简单。
https://github.com/dgutzeit/zkclient/commit/d07f6e2ef548798859d6161eba0b5a276cb011a0
可以请教个认证方面的问题吗?我为一个节点增加了一个acl认证,只分配了Read权限,实际测试中确实不能对这个节点进行修改,但是却可以删除,能帮忙看一下是什么问题吗?大致代码如下: List<ACL> acls = new ArrayList<ACL>( 2 ) ; Id adminId = new Id( "digest", DigestAuthenticationProvider.generateDigest( "admin:123" ) ) ; ACL acl1 = new ACL( Perms.ALL, adminId ) ; Id guestId = new Id( "digest", DigestAuthenticationProvider.generateDigest( "guest:123" ) ) ; ACL acl2 = new ACL( Perms.READ, guestId ) ; acls.add( acl1 ) ; acls.add( acl2 ) ; // 一个客户端创建节点并指定acl zk.create( "/configs", "configs".getBytes(), acls, CreateMode.PERSISTENT ) ; // 一个客户端对节点进行操作 zk.addAuthInfo( "digest", "guest:123".getBytes() ); // 此操作成功 System.out.println( "get:" + new String( zk.getData( "/configs", _MyWatcher, stat ) ) ); // 此操作会失败 zk.setData( "/configs", "configs_edit1".getBytes(), stat.getVersion(), null, null ) ; // 此删除操作居然每次测试都能成功 zk.delete( "/configs", -1 );