Apache ZooKeeper - 使用原生的API操作ZK_ACL权限

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Apache ZooKeeper - 使用原生的API操作ZK_ACL权限

20201124234058164.png


Pre

Apache ZooKeeper - ZK的ACL权限控制( Access Control List )

Apache ZooKeeper - 使用原生的API操作ZK_CRUD


Code

创建world模式的节点


package com.artisan.zk.originalClient;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Id;
import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;
import org.junit.Test;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
/**
 * @author 小工匠
 * @version 1.0
 * @description: TODO
 * @date 2020/12/1 11:19
 * @mark: show me the code , change the world
 */
@Slf4j
public class AclOperationStanAloneModeTest  extends  StandAloneBaseTest{
    private  static final  String  NODE_NAME = "/artisan-acl-node";
    /**
     * 创建world模式的节点
     */
    @SneakyThrows
    @Test
    public void testCreateNodeWithACL(){
        List<ACL>aclList = new ArrayList<>();
        ACL acl = new ACL();
        Id id = new Id();
        id.setId("anyone");
        id.setScheme("world");
        // 权限
        int perms = ZooDefs.Perms.ADMIN | ZooDefs.Perms.READ ;
        // 绑定
        acl.setId(id);
        acl.setPerms(perms);
        aclList.add(acl);
        String s = getZooKeeper().create(NODE_NAME, "artisan".getBytes(), aclList, CreateMode.PERSISTENT);
        log.info("path {}  created " ,s);
    }
}

20201201165939279.png


登录ZK Client查看数据



20201201170044917.png

使用授权模式创建节点

  /**
     *
     * 使用授权模式创建节点
     */
    @SneakyThrows
    @Test
    public void createWithAclTest2() {
        String namePWD = "artisan:artisanPWD";
        // 对连接添加授权信息
        getZooKeeper().addAuthInfo("digest",namePWD.getBytes());
        List<ACL> acLList = new ArrayList<ACL>();
        ACL acl = new ACL();
        Id id = new Id();
        id.setId(namePWD);
        id.setScheme("auth");
        int perms = ZooDefs.Perms.ADMIN  |  ZooDefs.Perms.READ |ZooDefs.Perms.WRITE;
        acl.setId(id);
        acl.setPerms(perms);
        acLList.add(acl);
        String s = getZooKeeper().create("/artisanNode2", "artisan".getBytes(), acLList, CreateMode.PERSISTENT);
        log.info("create path: {}",s);
    }


20201201170151868.png

20201201170250630.png

如果要手工查看 可以这儿样

20201201170408330.png


如果用代码访问 如下


使用授权模式获取节点数据

   @Test
    public void getDataWithAcl() throws KeeperException, InterruptedException {
        String namePWD = "artisan:artisanPWD";
        // 对连接添加授权信息
        getZooKeeper().addAuthInfo("digest",namePWD.getBytes());
        byte[] data = getZooKeeper().getData("/artisanNode2", false, null);
        log.info("GET_DATA : {}",new String(data));
    }
    public static void main(String[] args) throws NoSuchAlgorithmException {
        String sId = DigestAuthenticationProvider.generateDigest("artisan:artisanPWD");
        System.out.println(sId);
        //  -Dzookeeper.DigestAuthenticationProvider.superDigest=artisan:d3gLrY2XgzvXZbJObw+wiWIQDko=
    }


20201201170605304.png


是不是明白了???



20201201153122796.png



相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
1月前
|
Java API Maven
HDFS的API操作
HDFS的API操作
28 0
|
1月前
|
API
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
|
2月前
|
API
Poi 中文API文档 「40种操作 Excel文件的姿势」
Poi 中文API文档 「40种操作 Excel文件的姿势」
122 0
|
3月前
|
JSON API 数据格式
在钉钉开放平台中,创建或更新OA审批表单模板需要通过API接口进行操作
在钉钉开放平台中,创建或更新OA审批表单模板需要通过API接口进行操作【1月更文挑战第20天】【1月更文挑战第97篇】
52 1
|
3天前
|
XML API 数据格式
工作流JBPM操作API组任务
工作流JBPM操作API组任务
10 1
|
3天前
|
API 数据库
工作流JBPM操作API办理任务&流程变量
工作流JBPM操作API办理任务&流程变量
|
8天前
|
存储 Shell 数据安全/隐私保护
ZooKeeper【基础知识 04】控制权限ACL(原生的 Shell 命令)
【4月更文挑战第11天】ZooKeeper【基础知识 04】控制权限ACL(原生的 Shell 命令)
25 7
|
8天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
24 11
|
9天前
|
存储 Java 网络安全
ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
【4月更文挑战第10天】ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
17 1
|
12天前
|
API
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态。

推荐镜像

更多
http://www.vxiaotou.com