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);
相关推荐
IMPYLH5 小时前
Linux 的 pinky 命令
linux·运维·服务器·bash
REDcker6 小时前
Linux iptables 与 Netfilter:原理、路径与运维要点
linux·运维·服务器
噜噜大王_7 小时前
深入理解 C 语言内存操作函数:memcpy、memmove、memset、memcmp
c语言·开发语言
嵌入式×边缘AI:打怪升级日志8 小时前
Linux 驱动开发入门:从最简单的 hello 驱动到硬件交互
linux·驱动开发·交互
chh5638 小时前
C++--模版初阶
c语言·开发语言·c++·学习·算法
Bert.Cai9 小时前
Linux useradd命令详解
linux·运维
无忧.芙桃10 小时前
进程控制(上)
linux·运维·服务器
十年编程老舅10 小时前
深入 Linux 中断:原理详解 + 实战落地
linux·网络·linux内核·c/c++·中断
Bert.Cai10 小时前
Linux rm命令详解
linux·运维
知识浅谈11 小时前
OpenClaw保姆级安装教程:基于ubuntu系统
linux·ubuntu·node.js