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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 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实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
5月前
|
存储 API Apache
【zookeeper 第三篇章】客户端 API
本文介绍了Apache ZooKeeper客户端的一些常用命令及其用法。首先,`create`命令用于创建不同类型的节点并为其赋值,如持久化节点、有序节点及临时节点等。通过示例展示了如何创建这些节点,并演示了创建过程中的输出结果。其次,`ls`命令用于列出指定路径下的所有子节点。接着,`set`命令用于更新节点中的数据,可以指定版本号实现乐观锁机制。
40 0
|
2月前
|
监控 负载均衡 API
Apache Apisix轻松打造亿级流量Api网关
Apache APISIX 是一个动态、实时、高性能的 API 网关,提供负载均衡、动态上行、灰度发布、熔断、鉴权、可观测等丰富的流量管理功能。适用于处理传统南北向流量、服务间东西向流量及 k8s 入口控制。Airflow 是一个可编程、调度和监控的工作流平台,基于有向无环图 (DAG) 定义和执行任务,提供丰富的命令行工具和 Web 管理界面,方便系统运维和管理。
Apache Apisix轻松打造亿级流量Api网关
|
2月前
|
API
如何申请微店的API访问权限?
申请微店API访问权限需先注册账号并完成实名认证,随后提交开发申请,学习API接口,实现功能和数据传输,申请授权获取API Key,测试接口,最后正式上线并持续维护优化。
|
3月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
56 1
|
5月前
|
存储 JavaScript 前端开发
探索React状态管理:Redux的严格与功能、MobX的简洁与直观、Context API的原生与易用——详细对比及应用案例分析
【8月更文挑战第31天】在React开发中,状态管理对于构建大型应用至关重要。本文将探讨三种主流状态管理方案:Redux、MobX和Context API。Redux采用单一存储模型,提供预测性状态更新;MobX利用装饰器语法,使状态修改更直观;Context API则允许跨组件状态共享,无需第三方库。每种方案各具特色,适用于不同场景,选择合适的工具能让React应用更加高效有序。
113 0
|
5月前
|
数据采集 分布式计算 Kubernetes
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
140 4
|
4月前
|
负载均衡 API 数据安全/隐私保护
Zookeeper的客户端-原生的API
Zookeeper的客户端-原生的API
|
5月前
|
运维 Devops API
阿里云云效操作报错合集之调用api报错:没有权限,是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
5月前
|
分布式计算 监控 Hadoop
详解 Apache ZooKeeper 和 Apache Oozie
【8月更文挑战第31天】
152 0
|
5月前
|
API
【Azure 环境】在Azure活动目录中的应用注册,给应用添加API权限时发现API权限配置缺失
【Azure 环境】在Azure活动目录中的应用注册,给应用添加API权限时发现API权限配置缺失

热门文章

最新文章

推荐镜像

更多