基于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.pswp.cn/diannao/72156.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72156.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72156.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【湖北省計算機信息系統集成協會主辦,多高校支持 | ACM出版,EI檢索,往屆已見刊檢索】第二屆邊緣計算與并行、分布式計算國際學術會議(ECPDC 2025)

第二屆邊緣計算與并行、分布式計算國際學術會議&#xff08;ECPDC 2025&#xff09;將于2025年4月11日至13日在中國武漢盛大召開。本次會議旨在為邊緣計算、并行計算及分布式計算領域的研究人員、學者和行業專家提供一個高水平的學術交流平臺。 隨著物聯網、云計算和大數據技術…

CSS—背景屬性與盒子模型(border、padding、margin)

目錄 一.背景屬性 二.盒子模型 1.邊框border a. 圓角屬性border-radius b. 圖像屬性border-image 2. 內邊距padding 3. 外邊距margin 3. 寬度width與高度height 一.背景屬性 瀏覽器背景圖默認是平鋪效果&#xff08;復制圖片直至填滿設置的區域大小&#xff09; 背景…

【文獻閱讀】A Survey Of Resource-Efficient LLM And Multimodal Foundation Models

發表時間&#xff1a;二〇二四年九月二十三日 摘要 大型基礎模型&#xff0c;包括大語言模型&#xff08;LLMs&#xff09;、視覺Transformer&#xff08;ViTs&#xff09;、擴散模型以及基于大語言模型的多模態模型&#xff0c;正在革新整個機器學習的生命周期&#xff0c;…

SslConnection::SslConnection()詳解

一、&#x1f50d; SslConnection::SslConnection() 詳解 這個構造函數的主要作用是&#xff1a; 創建 SSL 對象創建 BIO&#xff08;I/O 緩沖區&#xff09;初始化 SSL 服務器模式綁定回調函數&#xff08;onRead() 處理接收數據&#xff09; &#x1f4cc; 1. 初始化 SSL 相…

python中單例模式應用

數據庫連接池單例模式 1. 為什么使用單例模式 創建數據庫連接是一個昂貴的過程&#xff08;涉及網絡通信、認證等&#xff09;。單例模式的連接池可以在程序啟動時初始化一組連接&#xff0c;并在整個生命周期中重用這些連接&#xff0c;而不是每次請求都新建連接。同時還可…

藍橋 發現環

0發現環 - 藍橋云課 找到環 不過在最近一次維護網絡時&#xff0c;管理員誤操作使得某兩臺電腦之間增加了一條數據鏈接&#xff0c;于是網絡中出現了環路。環路上的電腦由于兩兩之間不再是只有一條路徑&#xff0c;使得這些電腦上的數據傳輸出現了BUG。 為了恢復正常傳輸&am…

不同版本的BLE和WiFi有什么區別?

一、藍牙技術對比&#xff1a;從 Bluetooth 4.0 到 5.3 的演進與室內定位應用 藍牙技術自推出以來&#xff0c;經歷了多次重大升級&#xff0c;每一代都在傳輸速率、功耗、覆蓋范圍和功能上有所改進。本文將從 Bluetooth 4.0 到 5.3&#xff0c;逐一對比各版本的特點&#xff0…

看視頻學習方法總結

以下是提高教學視頻吸收率的系統性方法&#xff0c;結合認知科學原理和實際學習場景&#xff0c;幫助您最大化學習效果&#xff1a; 一、觀看前的黃金準備階段 60秒快速掃描法 用1分鐘快速瀏覽視頻目錄、章節標題和簡介&#xff0c;建立知識框架。荷蘭伊拉斯姆斯大學實驗表明&…

Basler acA1920-40gc

軟件 下載Basler軟件 | Basler AG 說明書 ace acA1920-40gc | GigE相機 | Basler | Basler AG 支持PTP同步 在使用 Basler acA1920-40gc 相機和 Polyn View 軟件時&#xff0c;確認 PTP&#xff08;Precision Time Protocol&#xff09;同步是否成功&#xff0c;可以通過…

華為hcia——Datacom實驗指南——STP工作基本原理及STP/RSTP基本功能配置

什么時候需要用到STP 在二層交換網絡中&#xff0c;為了避免環路產生。 什么是STP STP生成樹協議&#xff0c;是用來在冗余鏈路上消除二層環路。在眾多交換機中&#xff0c;需要設置出一個根橋&#xff0c;其余的交換機稱為非根橋&#xff0c;根橋是整個交換網絡的核心&…

【后端】Docker一本通

長期更新補充&#xff0c;建議關注收藏點贊 目錄 Docker概述安裝部署Docker基本操作使用docker部署tomcat使用docker部署mysql Docker概述 docker是?個應?級隔離的虛擬化技術docker三大核心概念 鏡像&#xff1a;是具有源的所有特征的?個標記?件 倉庫&#xff1a;存放鏡像…

linux中斷調用流程(arm)

文章目錄 ARM架構下Linux中斷處理全流程解析&#xff1a;從硬件觸發到驅動調用 ?**一、中斷觸發與硬件層響應** &#x1f50c;**1. 設備觸發中斷** &#x1f4e1; **二、CPU階段&#xff1a;異常入口與上下文處理** &#x1f5a5;?**1. 異常模式切換** &#x1f504;**2. 跳轉…

第十四屆藍橋杯大賽軟件賽國賽C/C++大學C組

A 【跑步計劃——日期問題】-CSDN博客 B 【殘缺的數字】-CSDN博客 C 題目 代碼 #include <bits/stdc.h> using namespace std;void change(int &x) {int sum 0, t x;while(t){sum t % 10;t / 10;}x - sum; } int main() {int n;cin >> n;int ans 0;…

汽車低頻發射天線介紹

汽車低頻PKE天線是基于RFID技術的深度研究及產品開發應用的一種天線&#xff0c;在汽車的智能系統中發揮著重要作用&#xff0c;以下是關于它的詳細介紹&#xff1a; 移動管家PKE低頻天線結構與原理 結構&#xff1a;產品一般由一個高Q值磁棒天線和一個高壓電容組成&#xff…

藍橋杯web第三天

展開扇子題目&#xff0c; #box:hover #item1 { transform:rotate(-60deg); } 當懸浮在父盒子&#xff0c;子元素旋轉 webkit display: -webkit-box&#xff1a;將元素設置為彈性伸縮盒子模型。-webkit-box-orient: vertical&#xff1a;設置伸縮盒子的子元素排列方…

達夢數據庫如何查看當前鎖表和如何解決鎖表問題

達夢數據庫查看當前鎖表及解決鎖表問題的方法如下&#xff1a; 一、查看當前鎖表信息 方法1&#xff1a;通過動態視圖 V$LOCK 和 V$SESSIONS 聯合查詢 查詢所有鎖信息&#xff1a; SELECT * FROM V$LOCK; 關鍵列說明&#xff1a;TRX_ID&#xff08;事務ID&#xff09;、LTYP…

ubuntu22.04系統如何自建2級ntp服務器

一&#xff1a;ntp服務器詳情 服務器型號 系統版本 IP地址 主機名 ntp服務版本 虛擬機8c-32g-1T Ubuntu22.04 10.20.30.2 DMZ-NTP-SERVER 4.2.8p15 二&#xff1a;ntp服務端部署配置腳本 #!/bin/bash # 腳本信息 echo "--------------------------…

計算機畢業設計SpringBoot+Vue.js汽車資訊網站(源碼+文檔+PPT+講解)

溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 作者簡介&#xff1a;Java領…

UE5切換關卡函數OpenLevel,輸入模式結構體,UI界面

1.輸入模式結構體 FInputModeGameOnly&#xff1a;玩家只能與游戲世界交互&#xff0c;UI 不可交互。FInputModeGameAndUI&#xff1a;玩家可以與游戲世界和 UI 同時交互。FInputModeUIOnly&#xff1a;玩家只能與 UI 交互&#xff0c;無法與游戲世界進行互動。 FInputModeGam…

JavaScript系列03-異步編程全解析

本文介紹了異步相關的內容&#xff0c;包括&#xff1a; 回調函數與回調地獄Promise詳解async/await語法Generator函數事件循環機制異步編程最佳實踐 1、回調函數與回調地獄 JavaScript最初是為處理網頁交互而設計的語言&#xff0c;異步編程是其核心特性之一。最早的異步編…