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

简介: 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



相关文章
|
11月前
|
API 微服务
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态。
1094 73
|
12月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
718 142
API 微服务
330 0
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 8 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
669 152
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
存储 安全 API
权限申请被拒?详解京东/淘宝API审核标准与申诉技巧
在对接电商 API 时,权限申请常因资质或材料问题被拒。本文详解京东、淘宝的审核标准与申诉策略,结合实战案例,教你如何提升通过率,规避风险,实现高效对接。
|
数据采集 缓存 监控
唯品会 API 开发痛点解析:从权限申请到数据清洗的实战经验
本文深入解析唯品会开放平台(VOP)API开发全流程,涵盖权限申请、签名机制、数据清洗、性能优化等核心挑战与实战解决方案,助力开发者高效构建稳定可靠的电商数据整合系统。
|
数据采集 测试技术 API
小白必看!电商 API 开发避坑指南:签名错误、权限申请全解决
本文总结电商API开发常见问题与解决方案,涵盖京东、淘宝、拼多多的签名规则、权限申请、频率限制等核心踩坑点,结合实战案例,助你高效避坑,提升开发效率90%。
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态
微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态

推荐镜像

更多