zookeeper C API client 如何设置digest鉴权验证

本文参考地址

zkCli.sh如何设置

自带的命令行客户端设置比较简单

  1. 增加授权用户。addauth digest root:111

其中digest是scheme,root:111是id (credential,root可以理解为明文用户,111可以理解为明文密码) :perm

2.为特定目录设置权限。 setAcl /1 auth:root:cdwra

为 /1 目录添加权限,目录可以任意指定,只对当前目录起作用。比如当前目录为 /1, 所以根目录/没有鉴权验证。root可以理解为明文用户,cdwra含义为缩写。

c 可以创建子节点, d 可以删除子节点(仅下一级节点), r 可以读取节点数据及显示子节点列表,w 可以设置节点数据, a 可以设置节点访问控制列表权限

  1. 为目录设置权限后,重新连接访问,则需要针对会话添加授权用户

addauth digest root:111

C API client如何设置

  1. 增加授权用户
cpp 复制代码
int zoo_add_auth(zhandle_t *zh,const char* scheme,const char* cert,int certLen, void_completion_t completion, const void *data);

scheme填写digest

cert填写root:111

certLen填写cert字符串长度

completion回调函数

该函数执行成功后,即可访问需要鉴权验证的目录

  1. 为特定目录设置权限
cpp 复制代码
int zoo_set_acl(zhandle_t *zh, const char *path, int version, const struct ACL_vector *acl)

path填写需要设置权限的路径

version填写-1,表示忽略校验版本号

acl 鉴权数据结构体
用法如下:

cpp 复制代码
auto acl_item = new ACL{};
acl_item->id.scheme = (char*)"digest";
acl_item->id.id = (char*)"root:wEu/CPgrVI/4mg2A1AKUtstW6AI="; // 明文用户名:base64密码,明文密码是111
acl_item->perms = ZOO_PERM_ALL; // 所有权限,即cdwra

struct ACL_vector acl{};
acl.count = 1; // ACL 规则的数量
acl.data = acl_item;
auto rc = zoo_set_acl(zh_, "/1", -1, &acl);
相关推荐
云知谷37 分钟前
【C++基本功】C++适合做什么,哪些领域适合哪些领域不适合?
c语言·开发语言·c++·人工智能·团队开发
添砖java‘’1 小时前
vim高效编辑:从入门到精通
linux·编辑器·操作系统·vim
tryCbest2 小时前
CentOS部署Docker容器
linux·docker·centos
qyhua3 小时前
【Linux运维实战】彻底修复 CVE-2011-5094 漏洞
linux·运维·安全
坠金3 小时前
linux/centos迁移conda文件夹
linux·centos·conda
纳于大麓4 小时前
Kotlin基础语法
linux·windows·kotlin
九皇叔叔4 小时前
Linux Shell 正则表达式中的 POSIX 字符集:用法与实战
linux·运维·正则表达式
東雪蓮☆5 小时前
K8s 平滑升级
linux·运维·云原生·kubernetes
---学无止境---6 小时前
Linux中进程创建和缓存对象初始化fork_init、proc_caches_init和buffer_init
linux
qq_183802876 小时前
Linux内核idr数据结构使用
linux·运维·服务器