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);
相关推荐
北风toto几秒前
Linux 服务器如何判断 CPU 是否支持 x86-64-v2 指令集
java·linux·服务器
程序员-Benothing3 分钟前
Linux抓包分析教程:tcpdump、Wireshark、tshark实战
linux·运维·服务器
QMCY_jason5 分钟前
ubuntu x86_64架构的编译 aarch64架构的程序
linux·运维·ubuntu
拂拉氏20 分钟前
【知识讲解】 Linux进程间通信之管道与共享内存
linux·进程间通信
其实防守也摸鱼20 分钟前
Linux文本处理命令理论学习
linux·服务器·前端·数据库·sql·学习·安全
无足鸟ICT22 分钟前
【RHCA+】rpm命令(安装、升级、卸载和查询)
linux·运维·服务器
吹什么轩24 分钟前
linux系统复习:从冯·诺依曼到操作系统:一切的开场
linux·运维·服务器
程序员-Benothing25 分钟前
SSH从入门到精通:密钥登录、config配置、跳板机
linux·运维·服务器·ssh
H.莓飛39 分钟前
【Linux】自主 Shell
linux·运维·服务器·c语言·开发语言·visual studio
bigcarp1 小时前
Frida-dexdump 绕过app的Root检测
linux·运维·服务器