当前位置: 首页 > news >正文

zookeeper开启SASL权限认证

目录

一、SASL介绍

二、使用 SASL 进行身份验证

2.1 服务器到服务器的身份验证

2.2 客户端到服务器身份验证

三、验证功能


一、SASL介绍

默认情况下,ZooKeeper 不使用任何形式的身份验证并允许匿名连接。但是,它支持 Java 身份验证与授权服务(JAAS),可用于使用简单身份验证和安全层(SASL)设置身份验证。zookeeper 支持使用带有本地存储的凭证的 DIGEST-MD5 SASL 机制进行身份验证。

SASL是一种用来扩充C/S模式验证能力的机制认证机制, 全称Simple Authentication and Security Layer。

二、使用 SASL 进行身份验证

JAAS 使用单独的配置文件进行配置。建议将 JAAS 配置文件放在与 ZooKeeper 配置相同的目录中(/zookeeper/conf/)。如文件名是 jaas.conf。ZooKeeper 是集群部署时,必须在所有节点上创建 JAAS 配置文件。

SASL 身份验证是单独配置的,用于服务器对服务器通信( ZooKeeper 实例之间的通信)和客户端对服务器通信( 客户端和 ZooKeeper 之间的通信)。服务器对服务器身份验证仅与具有多个节点的 ZooKeeper 集群相关。

2.1 服务器到服务器的身份验证

对于服务器到服务器身份验证,JAAS 配置文件包含两个部分:

  • 服务器配置
  • 客户端配置

使用 DIGEST-MD5 SASL 机制时,QuorumServer 上下文用于配置身份验证服务器。它必须包含允许所有用户名,以便其以未加密的形式与其密码连接。第二个上下文 QuorumLearner 必须为内置在 ZooKeeper 中的客户端配置。它还包含未加密格式的密码。以下是 DIGEST-MD5 机制的 JAAS 配置文件示例:

QuorumServer {org.apache.zookeeper.server.auth.DigestLoginModule requireduser_zookeeper="123456";
};QuorumLearner {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername="zookeeper"password="123456";
};

除了 JAAS 配置文件外,还必须通过指定以下选项在 ZooKeeper 的配置文件中启用服务器到服务器身份验证:

quorum.auth.enableSasl=true
quorum.auth.learnerRequireSasl=true
quorum.auth.serverRequireSasl=true
quorum.auth.learner.loginContext=QuorumLearner
quorum.auth.server.loginContext=QuorumServer
quorum.cnxn.threads.size=20# 客户端到服务器身份验证
requireClientAuthScheme=sasl
# authProvider.myId=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
# authProvider.2=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
# authProvider.3=org.apache.zookeeper.server.auth.SASLAuthenticationProvider

然后,通过系统环境变量设置jaas.conf的路径

"-Djava.security.auth.login.config=/opt/kafka/config/jaas.conf"

2.2 客户端到服务器身份验证

客户端到服务器身份验证在与服务器到服务器身份验证相同的 JAAS 文件中配置。

将服务器上下文添加到 JAAS 配置文件,以配置客户端到服务器的身份验证。对于 DIGEST-MD5 机制,它会配置所有用户名和密码:

QuorumServer {org.apache.zookeeper.server.auth.DigestLoginModule requireduser_zookeeper="123456";
};QuorumLearner {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername="zookeeper"password="1234567";
};Server {org.apache.zookeeper.server.auth.DigestLoginModule requireduser_test="123456";
};Client {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername="test"password="123456";
};

同时,zookeeper的配置文件中需要添加如下配置:

# 客户端连接是否必须进行SASL认证
sessionRequireClientSASLAuth=true

三、验证功能

1、启动zk集群,zk集群可正常选举

2、编写客户端demo

System.setProperty("java.security.auth.login.config", "E:\\study\\apache-zookeeper-3.8.4-bin\\conf\\jaas.conf");System.out.println("********************** start zk ********************** ");CountDownLatch countDownLatch = new CountDownLatch(1);ZooKeeperAdmin zooKeeper = new ZooKeeperAdmin("127.0.0.1:2181", 5000, event -> {System.out.println("触发了事件:" + event.getState());countDownLatch.countDown();});Stat existsName = zooKeeper.exists("/age", watchedEvent -> System.out.println("--" + watchedEvent.getState()));if (existsName == null) {zooKeeper.create("/age", "18".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);} else {byte[] data = zooKeeper.getData("/name", false, null);System.out.println("--->" + new String(data));}String srvr = FourLetterWordMain.send4LetterWord("127.0.0.1", 2181, "srvr", false);System.out.println(srvr);

相关文章:

zookeeper开启SASL权限认证

目录 一、SASL介绍 二、使用 SASL 进行身份验证 2.1 服务器到服务器的身份验证 2.2 客户端到服务器身份验证 三、验证功能 一、SASL介绍 默认情况下,ZooKeeper 不使用任何形式的身份验证并允许匿名连接。但是,它支持 Java 身份验证与授权服务(JAAS)…...

mysql一个小问题引发的思考-mysql类型转换-查询缓存 及 MYSQL查询缓存以及自动选择不使用查询缓存的情况

一、mysql一个小问题引发的思考-mysql类型转换-查询缓存 最近在做的一个项目中有一个SQL语句发现点问题,大概如下: select * from table where cid0 or find_in_set(1, cid); 数据表中的字段cid是字符串类型,原来的后端同学未提过此字段还能是…...

css更改图片颜色

css更改图片颜色&#xff0c;比较时候颜色单一的图片&#xff0c;比如logo之类的 css中的 filter 属性定义元素&#xff08;通常是 <img>&#xff09;的视觉效果&#xff08;如模糊和饱和度&#xff09; img{ -webkit-filter: invert(51%) sepia(94%) saturate(6433%) h…...

通过POST请求往Elastic批量插入数据

文章目录 引言I 请求文档请求参数请求例子引言 调试工具:Apifox 需求: 向Elasticsearch中的’test_index’索引批量插入文档 情况认证: Basic Auth 在 Header 添加参数 Authorization,其值为在 Basic 之后拼接空格,以及经过 Base64 编码的 {{Username}}:{{Password}} 示…...

JAW:一款针对客户端JavaScript的图形化安全分析框架

关于JAW JAW是一款针对客户端JavaScript的图形化安全分析框架&#xff0c;该工具基于esprima解析器和EsTree SpiderMonkey Spec实现其功能&#xff0c;广大研究人员可以使用该工具分析Web应用程序和基于JavaScript的客户端程序的安全性。 工具特性 1、动态可扩展的框架&#x…...

错误解决 error CS0117: ‘Buffer‘ does not contain a definition for ‘BlockCopy‘

Unity 2022.3.9f1 导入 Runtime OBJ Importer 后出现&#xff1a; error CS0117: ‘Buffer’ does not contain a definition for ‘BlockCopy’ 解决办法&#xff1a; 源代码&#xff1a; int DDS_HEADER_SIZE 128; byte[] dxtBytes new byte[ddsBytes.Length - DDS_HEAD…...

ICMPv6与DHCPv6之网络工程师软考中级

ICMPv6概述 ICMPv6是IPv6的基础协议之一。 在IPv6报文头部中&#xff0c;Next Header字段值为58则对应为ICMPv6报文。 ICMPv6报文用于通告相关信息或错误。 ICMPv6报文被广泛应用于其它协议中&#xff0c;包括NDP、Path MTU发现机制等 ICMPv6控制着IPv6中的地址自动配置、地址…...

【HTML — 构建网络】HTML 入门

在本文中,我们将介绍 HTML 的绝对基础知识。为了帮助您入门,本文定义了元素、属性以及您可能听说过的所有其他重要术语。它还解释了这些在 HTML 中的位置。您将学习 HTML 元素的结构、典型的 HTML 页面的结构以及其他重要的基本语言功能。在此过程中,也将有机会玩转 HTML! …...

javafx的ListView代入项目的使用

目录 1. 创建一个可观察的列表&#xff0c;用于存储ListView中的数据,这里的User是包装了用户的相关信息。 2.通过本人id获取friendid&#xff0c;及好友的id&#xff0c;然后用集合接送&#xff0c;更方便直观一点。 3.用for遍历集合&#xff0c;逐个添加。 4.渲染器&…...

基于ABAP OLE技术实现对服务器文件进行读写操作

使用ABAP中的OLE&#xff08;Object Linking and Embedding&#xff09;技术&#xff0c;可以实现对服务器文件的读写操作。以下是一个示例&#xff0c;演示如何通过ABAP代码使用OLE自动化对象来读写服务器上的文件。这里主要以Excel文件的读写操作为例。 1. 读Excel文件 代码…...

求教Postgresql在jdbc处理bit(1)字段的预处理解决方案

文章目录 1.建表语句&#xff1a;2.使用以下方式的预处理方式都报错了3.可以先用sql拼接实现功能 1.建表语句&#xff1a; CREATE TABLE public.h_user (id serial4 not null,username varchar(50) NULL,"password" varchar(64) NULL,nickname varchar(60) NULL,ema…...

微信小程序-自定义tabBar

通过官网给出的示例自己实现了自定义的tabBar&#xff0c;但结果发现 无法监听页面生命周期函数 结语&#xff1a;原想的是实现不一样的效果&#xff08;如下&#xff09; 故尝试了自定义tabBar&#xff0c;虽然做出来了&#xff0c;但也发现这个做法存在不足&#xff1a; 在…...

vue3+element-plus 实现动态菜单和动态路由的渲染

在 Vue.js 中&#xff0c;使用 Vue Router 管理路由数据&#xff0c;并将其用于渲染 el-menu&#xff08;Element UI 的菜单组件&#xff09;通常涉及以下几个步骤&#xff1a; 定义路由元数据&#xff1a; 在你的路由配置中&#xff0c;为每个路由项添加 meta 字段&#xff0c…...

GO-学习-03-基本数据类型

数据类型&#xff1a;基本数据类型和复合数据类型 基本数据类型&#xff1a;整型、浮点型、布尔型、字符串 复合数据类型&#xff1a;数组、切片、结构体、函数、map、通道&#xff08;channel&#xff09;、接口 整型&#xff1a; package main import "fmt" im…...

高并发场景下,系统的保护机制

伴随着分布式&#xff0c;微服务项目的快速发展。各个微服务的调用和通讯难免会出现依赖关系&#xff0c;如果上游服务在依赖下游服务的时候下游服务出现了故障从而导致下游服务的不可用&#xff0c;进一步导致了上游的服务被拖垮&#xff0c;就会发生服务雪崩&#xff0c;故障…...

服务器构建私有npm库(Docker + Verdaccio)

npm官网有时候因为网络原因包推不上去&#xff0c;那就简单构建个私有库 私有库不会被共享&#xff0c;且配置不需要太高1h2G就行 1.需要安装Docker&#xff0c;这个跳过了 2.生成配置文件 mkdir /home/verdaccio cd /home/verdaccio mkdir conf && mkdir storage &am…...

LabVIEW做二次开发时应该注意哪些方面?

在使用LabVIEW进行二次开发时&#xff0c;以下几个方面需要特别注意&#xff1a; 需求明确化&#xff1a; 确认并详细记录客户的需求&#xff0c;明确系统的功能、性能、可靠性等要求。制定详细的需求文档&#xff0c;并与客户反复确认&#xff0c;避免后期的需求变更和误解。 …...

docker配置上网代理获取镜像

一、添docker子配置档设置 1、创建目录 mkdir /etc/systemd/system/docker.service.d 2、创建http-proxy.conf文件,增加以下内容 cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF [Service] Environment“HTTP_PROXYhttp://192.168.0.2:8118…...

SqlSugar删除没有定义主键的实体类对应的数据库表数据

一般而言&#xff0c;使用SqlSugar的DbFirst功能创建数据库表实体类时&#xff0c;如果数据库表有主键&#xff0c;生成的实体类对应属性也会标识为主键&#xff0c;如下图所示。   但有时候生成的实体类没有自动配置主键&#xff0c;这时可以通过以下方式进行删除操作&…...

虚拟机复制后网络不可用,报错“network.service - LSB: Bring up/down networking”

查询IP地址&#xff0c;eth33 没有显示IP地址 尝试重启&#xff0c;有报错&#xff0c;并且有提示&#xff0c;按照提示执行下看看 解决办法 chkconfig NetworkManager offsystemctl disable NetworkManager.serviceservice NetworkManager stopservice network restart 之后检…...

如何用本地AI技术实现视频硬字幕的高效提取:video-subtitle-extractor实战指南

如何用本地AI技术实现视频硬字幕的高效提取&#xff1a;video-subtitle-extractor实战指南 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包…...

终极指南:3分钟实现GitHub全界面中文化,彻底消除语言障碍

终极指南&#xff1a;3分钟实现GitHub全界面中文化&#xff0c;彻底消除语言障碍 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese GitH…...

抖音内容采集技术方案深度解析:架构设计与企业级应用实战指南

抖音内容采集技术方案深度解析&#xff1a;架构设计与企业级应用实战指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...

基于C语言实现(控制台)小型文件系统

♻️ 资源 大小&#xff1a; 3.40MB ➡️ 资源下载&#xff1a;https://download.csdn.net/download/s1t16/87430288 小型文件系统 一、需求分析 1.1 小型文件系统介绍 科技的进步已将人类带入了信息大爆炸的时代&#xff0c;随着计算机科学技术的不断发展&#xff0c;计算…...

从“左撇子困境”看包容性设计:打破设计偏见,提升产品普适性

1. 设计中的“左撇子困境”&#xff1a;一个被忽视的普适性问题作为一名在硬件设计和产品开发领域摸爬滚打了十几年的工程师&#xff0c;我经常和团队讨论“用户体验”和“人机工程学”。这些词听起来高大上&#xff0c;但它们的本质&#xff0c;往往就藏在一些最不起眼的日常细…...

白嫖使用 Claude Opus 4.7 一个月,新手保姆级教程

挖槽&#xff0c;最近亚马逊做了一次大善人&#xff0c;为它自家的 Kiro 做拉新活动&#xff0c;新注册账号可以直接获得一个月的 Kiro Pro 会员&#xff0c;价值 20 美刀。 教程非常详细&#xff0c;所以有点长&#xff0c;想看最短流程版的可以直接划到文章末尾。 Kiro 是什…...

适合情侣复合的歌曲|一开口就破防,唱尽遗憾与舍不得,听完都想重新在一起

有些分开不是不爱&#xff0c;只是赌气、误会、嘴硬、放不下面子。明明心里还惦记&#xff0c;却谁都不肯先低头&#xff1b;明明还深爱&#xff0c;却硬生生走成了陌路。想复合&#xff0c;却不知怎么开口&#xff1b;想挽回&#xff0c;又怕被拒绝、怕尴尬、怕自作多情。其实…...

Cursor聊天数据恢复工具:原理、实操与避坑指南

1. 项目概述&#xff1a;数据恢复的“后悔药”在数字创作的世界里&#xff0c;我们与工具的交互正变得越来越智能和复杂。Cursor&#xff0c;这款集成了AI辅助编程能力的编辑器&#xff0c;已经成为了许多开发者和技术写作者的主力工具。它不仅仅是写代码&#xff0c;更是一个集…...

嵌入式开发中CHM文件的应用与优化

1. CHM文件在嵌入式开发中的核心价值CHM&#xff08;Compiled HTML Help&#xff09;作为微软推出的编译型帮助文档格式&#xff0c;在嵌入式开发领域已经服役超过20年。这种将HTML文档、索引和搜索功能打包成单一文件的格式&#xff0c;特别适合Keil MDK这类嵌入式开发环境的技…...

DownKyi终极指南:快速掌握B站视频批量下载与8K超高清获取技巧

DownKyi终极指南&#xff1a;快速掌握B站视频批量下载与8K超高清获取技巧 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等…...