基于Kerberos认证对接华为云Elasticsearch

可以通过华为官方提供的Elasticsearch Java客户端(基于Elasticsearch官方版本改造),实现基于Kerberos认证访问和操作华为云Elasticsearch;亦可以使用更加通用的开源Elasticsearch Java客户端bboss,实现基于Kerberos认证访问和操作华为云Elasticsearch。

本文介绍使用bboss实现基于Kerberos认证访问和操作华为云Elasticsearch的方法。

1. bboss介绍

bboss是一个高性能高兼容性的Elasticsearch java客户端框架:
在这里插入图片描述
更多bboss介绍,可以访问文档了解:https://esdoc.bbossgroups.com/#/README

2. 准备工作

2.1 准备Kerberos认证配置文件

获取Kerberos配置文件 :从华为云获取 krb5.conf 和 jaas.conf 文件,这些文件由华为云Elasticsearch提供。

获取keytab文件 :从华为云获取 keytab 文件,该文件包含了客户端的凭据信息,文件由华为云Elasticsearch提供。

2.2 集成bboss

集成bboss非常简单,只需在项目中导入bboss对应的maven坐标即可:

<dependency><groupId>com.bbossgroups.plugins</groupId><artifactId>bboss-datatran-jdbc</artifactId><version>7.3.5</version>
</dependency>

实际bboss版本号可以参考文档获取:
https://esdoc.bbossgroups.com/#/changelog

3. 配置和使用Elasticsearch数据源

在项目中导入bboss maven坐标,并准备好Kerberos认证相关的材料后,就可以实现基于Kerberos认证对接华为云Elasticsearch的功能,直接上代码。
通过以下代码定义和初始化Elasticsearch数据源,并通过ClientInterface接口操作和访问华为云Elasticsearch,验证集成是否成功:

		Map properties = new HashMap();/*** 配置Elasticsearch数据源参数,这里只设置必须的配置项,更多配置参考文件:* https://gitee.com/bboss/elasticsearchdemo/blob/master/src/main/resources/application.properties*///定义Elasticsearch数据源名称:esDS,后续通过esDS获取对应数据源的客户端API操作和访问Elasticsearchproperties.put("elasticsearch.serverNames","esDS");//es服务器地址和端口,多个用逗号分隔//properties.put("esDS.elasticsearch.rest.hostNames","192.168.137.1:8200");//开启https协议,华为云Elasticsearch一般会启用https,在bboss中,配置开启https协议的Elasticsearch节点地址时,需带上https://协议头;//更多https配置,可浏览后面参考资料中的【高性能elasticsearch ORM开发库使用介绍】了解properties.put("esDS.elasticsearch.useHttps","true");properties.put("esDS.elasticsearch.rest.hostNames","https://202.280.211.227:9280,https://202.280.211.227:9281,https://202.280.211.227:9282");//是否在控制台打印dsl语句,log4j组件日志级别为INFO或者DEBUGproperties.put("esDS.elasticsearch.showTemplate","true");//集群节点自动发现,关闭服务发现机制properties.put("esDS.elasticsearch.discoverHost","false");//Kerberos安全认证配置--开始properties.put("esDS.http.kerberos.serverRealmPath","/elasticsearch/serverrealm");//配置华为云Elasticsearch服务端Princpal查询服务地址properties.put("esDS.http.kerberos.useSubjectCredsOnly","false");//华为云Elasticsearch krb5.conf文件,由华为提供properties.put("esDS.http.kerberos.krb5Location","C:/environment/es/8.13.2/elasticsearch-8.13.2/config/krb5.conf");//华为云Elasticsearch jaas.conf文件,由华为提供properties.put("esDS.http.kerberos.loginConfig","C:/environment/es/8.13.2/elasticsearch-8.13.2/config/jaas.conf");//配置登录模块名称,与华为云Elasticsearch jaas.conf文件中的模块名称一致properties.put("esDS.http.kerberos.loginContextName","ESClient");//配置是否debug Kerberos认证详细日志properties.put("esDS.http.kerberos.debug","true");//Kerberos安全认证配置--结束//启动和初始化Elasticsearch数据源ElasticSearchBoot.boot(properties);//通过Elasticsearch数据源名称esDS获取对应数据源的客户端API,操作和访问Elasticsearch//可以反复根据数据源名称esDS,调用下面的方法获取ClientInterface接口实例,始终返回单实例多线程安全的ClientInterface对象ClientInterface clientInterface = ElasticSearchHelper.getRestClientUtil("esDS");//验证客户端:通过Elasticsearch rest服务获取ES集群信息String result = clientInterface.executeHttp("/?pretty", ClientInterface.HTTP_GET);logger.info(result);//验证客户端:通过API获取ES集群配置参数logger.info(clientInterface.getClusterSettings());//验证客户端:通过API判断索引demo是否存在boolean exist = clientInterface.existIndice("demo");logger.info(exist+"");//验证客户端:通过API从索引demo获取文档id为1的文档数据(String报文)String doc = clientInterface.getDocument("demo","1");logger.info(doc);//验证客户端:通过API从索引demo获取文档id为1的文档数据(or mapping示例:返回Map结构的数据,亦可以转换为PO对象)Map mapdoc = clientInterface.getDocument("demo","1",Map.class);

基于配置Kerberos认证实现代码非常简洁,只需在平常数据源参数配置的基础上,增加Kerberos认证相关的参数配置。上述代码中涉及的华为云Kerberos配置文件krb5.conf和jaas.conf,由华为云Elasticsearch提供,这里不单独介绍,需要注意一下:http.kerberos.loginContextName参数对应的值需与jaas.conf配置文件中认证模块名称一致,这里是ESClient。

下面是一个jaas.conf配置内容样例:

ESClient {com.sun.security.auth.module.Krb5LoginModule requireduseKeyTab=truekeyTab="C:/environment/es/8.13.2/elasticsearch-8.13.2/config/elastic.keytab"principal="elastic/admin@BBOSSGROUPS.COM"useTicketCache=falsestoreKey=truedebug=false;
};

其中的elastic.keytab文件由华为云Elasticsearch提供。更多ClientInterface api使用方法,可以访问下面参考资料中提供的链接了解。

4. 运行案例

本文对应的代码源码工程下载地址:

码云 https://gitee.com/bboss/eshelloword-booter

Github https://github.com/bbossgroups/eshelloword-booter

对应的Kerberos认证Java Demo CustormInitAndBootKerberosAuth.java

可以下载案例源码工程,参考前面章节内容,将Elasticsearch地址和Kerberos相关配置修改为本地配置,然后执行案例代码,如输出如下信息,说明集成成功:

11:36:07.976 [main] INFO  org.frameworkset.elasticsearch.client.ElasticSearchRestClient - Elasticsearch Server Info:
{"name" : "node@202.280.211.227","cluster_name" : "elasticsearch_cluster","cluster_uuid" : "3veeeeeeeeeeeeeeeee4Q","version" : {"number" : "7.10.2","build_flavor" : "oss","build_type" : "tar","build_hash" : "unknown","build_date" : "unknown","build_snapshot" : true,"lucene_version" : "8.7.0","minimum_wire_compatibility_version" : "6.7.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}

可以观看bboss环境搭建视频,搭建运行环境:
https://mp.weixin.qq.com/s/RoJdxiPw_mnuhQpkqzY9QQ

5. 参考资料

Elasticsearch文档增删改查操作介绍 https://esdoc.bbossgroups.com/#/document-crud

高性能elasticsearch ORM开发库使用介绍 https://esdoc.bbossgroups.com/#/development

快速开始bboss https://esdoc.bbossgroups.com/#/quickstart

开发交流 https://esdoc.bbossgroups.com/#/supportus

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26313.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rocky Linux 8.5 6G内存 静默模式(没图形界面)安装Oracle 19C

Oracle19c 下载地址 Database Software Downloads | Oraclehttps://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_ee 目录 一、准备服务器 1、服务器可以克隆、自己装 2、修改主机名 3、重启 4、关闭selinux 5、关闭防火墙 5.1、…

6.6.6 嵌入式SQL

文章目录 2个核心问题识别SQL语句主语言和SQL通信完整导图 2个核心问题 SQL语句嵌入高级语言需要解决的2个核心问题是&#xff1a;如何识别嵌入语句&#xff1f;如何让主语言&#xff08;比如C,C语言&#xff09;和SQL通信&#xff1f; 识别SQL语句 为了识别主语言中嵌入的SQL…

农作物叶子病害检测数据集VOC+YOLO格式5169张29类别

数据集有部分增强 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5169 标注数量(xml文件个数)&#xff1a;5169 标注数量(txt文件个数)…

hfs for windows linux apple

HFS&#xff08;HTTP File Server&#xff09;是一款轻量级的文件共享工具&#xff0c;专门用于通过 HTTP 协议快速共享文件。它非常适合在局域网或互联网上临时共享文件&#xff0c;操作简单&#xff0c;无需复杂的配置。 HFS 的主要特点 简单易用&#xff1a; 界面直观&#…

塑造网络安全的关键事件

注&#xff1a;本文为 “网络安全” 相关文章合辑。 机翻&#xff0c;未校。 Timeline of Cyber Security: Key Events that Shaped the Field 网络安全时间表&#xff1a;塑造该领域的关键事件 October 29, 2023 Cyberattacks are an everyday threat, always changing. T…

本地部署deepseek大模型后使用c# winform调用(可离线)

介于最近deepseek的大火&#xff0c;我就在想能不能用winform也玩一玩本地部署&#xff0c;于是经过查阅资料&#xff0c;然后了解到ollama部署deepseek,最后用ollama sharp NUGet包来实现winform调用ollama 部署的deepseek。 本项目使用Vs2022和.net 8.0开发&#xff0c;ollam…

Python 绘制迷宫游戏,自带最优解路线

1、需要安装pygame 2、上下左右移动&#xff0c;空格实现物体所在位置到终点的路线&#xff0c;会有虚线绘制。 import pygame import random import math# 迷宫单元格类 class Cell:def __init__(self, x, y):self.x xself.y yself.walls {top: True, right: True, botto…

2025-03-01 学习记录--C/C++-PTA 7-35 有理数均值

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 二、代码&#xff08;C语言&#xff09;⭐️ #include <stdio.h>// 【关键】计算最大公约数&#xff…

入门基础项目(SpringBoot+Vue)

文章目录 1. css布局相关2. JS3. Vue 脚手架搭建4. ElementUI4.1 引入ElementUI4.2 首页4.2.1 整体框架4.2.2 Aside-logo4.2.3 Aside-菜单4.2.4 Header-左侧4.2.5 Header-右侧4.2.6 iconfont 自定义图标4.2.7 完整代码 4.3 封装前后端交互工具 axios4.3.1 安装 axios4.3.2 /src…

CAM350_安装

版本&#xff1a;V14.5 一、安装 打开.exe文件 选择不重启&#xff0c;然后再打开这个.exe 再来一次类似的操作 二、配置 复制patch文件夹中的这三个 &#xff0c;粘贴到掉安装目录中 设置ACT_INC_LICENSE_FILE用户环境变量来设置license管理 打开电脑的环境变量 破解完毕&am…

STM32定时器超声波测距实验手册

1. 实验目标 使用STM32 HAL库和定时器实现超声波测距功能。 当超声波模块前方障碍物距离 < 10cm 时&#xff0c;点亮板载LED。 2. 硬件准备 硬件模块说明STM32开发板STM32F103C8T6HC-SR04模块超声波测距模块杜邦线若干连接模块与开发板 3. 硬件连接 HC-SR04引脚STM32引脚…

Open3D解决SceneWidget加入布局中消失的问题

Open3D解决SceneWidget加入布局中消失的问题 Open3D解决SceneWidget加入布局中消失的问题1. 问题2. 问题代码3. 解决 Open3D解决SceneWidget加入布局中消失的问题 1. 问题 把SceneWidget加到布局管理其中图形可以展示出来&#xff0c;但是鼠标点击就消失了。 stackoverflow上已…

9 - QSPI Flash读写测试实验

文章目录 1 实验任务2 系统框图3 软件设计 1 实验任务 本实验任务是使用PS侧的QSPI Flash控制器&#xff0c;先后对QSPI Flash 进行写、 读操作。通过对比读出的数据是否等于写入的数据&#xff0c; 从而验证读写操作是否正确。 2 系统框图 3 软件设计 注意事项&#xff1a;…

简述一下anythingllm与vllm

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 关于 AnythingLLM 和 VLLM 的技术信息 AnythingLLM 特点与优势 对于主要需求在于文档问答…

JavaScript 数据类型和数据结构:从基础到实践

JavaScript 作为一门动态类型语言&#xff0c;以其灵活性和强大的功能在前端开发中占据了重要地位。理解 JavaScript 的数据类型和数据结构是掌握这门语言的关键。本文将带你深入探讨 JavaScript 中的数据类型、数据结构以及相关的类型检查和转换。 一、原始数据类型&#xff1…

深入解析XXL-JOB任务调度执行原理

引言 ​ 在分布式系统中&#xff0c;定时任务调度是业务场景中不可或缺的一环。面对海量任务、复杂依赖和高可用性要求&#xff0c;传统单机调度方案逐渐显得力不从心。XXL-JOB作为一款开源的分布式任务调度平台&#xff0c;凭借其轻量级、高扩展性和易用性成为众多企业的选择…

为AI聊天工具添加一个知识系统 之127 详细设计之68 编程 核心技术:Cognitive Protocol Language 之1

本文要点 要点 今天讨论的题目&#xff1a;本项目&#xff08;为使用AI聊天工具的两天者加挂一个知识系统&#xff09; 详细程序设计 之“编程的核心技术” 。 source的三个子类&#xff08;Instrument, Agent, Effector&#xff09; 分别表示--实际上actually &#xff0c;…

word转换为pdf后图片失真解决办法、高质量PDF转换方法

1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker &#xff08;1&#xff09;点击word选项卡上的Acrobat插件&#xff0c;&#xff08;2&#xff09;点击“首选项”按钮&#xff0c;&#xff08;3&#xff09;点击“高级配置”按钮&#xff08;4&#xff09;点…

Kafka生产者相关

windows中kafka集群部署示例-CSDN博客 先启动集群或者单机也OK 引入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.9.0</version></dependency>关于主题创建 理论…

《Effective Objective-C》阅读笔记(下)

目录 内存管理 理解引用计数 引用计数工作原理 自动释放池 保留环 以ARC简化引用计数 使用ARC时必须遵循的方法命名规则 变量的内存管理语义 ARC如何清理实例变量 在dealloc方法中只释放引用并解除监听 编写“异常安全代码”时留意内存管理问题 以弱引用避免保留环 …