• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于LDAP協(xié)議的Solr用戶認(rèn)證設(shè)計與實現(xiàn)

      2020-12-30 11:22:07吳科樺張藝夕
      關(guān)鍵詞:身份驗證用戶名插件

      ◆吳科樺 張藝夕

      基于LDAP協(xié)議的Solr用戶認(rèn)證設(shè)計與實現(xiàn)

      ◆吳科樺1張藝夕2

      (1.南京中興新軟件有限責(zé)任公司 江蘇 210000;2.南京掌控網(wǎng)絡(luò)科技有限公司 江蘇 210000)

      本文針對Solr的用戶基本認(rèn)證方式進(jìn)行了改進(jìn),提出了一種基于LDAP協(xié)議的Solr用戶認(rèn)證方案,并給出了設(shè)計方案和具體實現(xiàn)。該方案實現(xiàn)了用戶認(rèn)證的統(tǒng)一管理,提高了集群系統(tǒng)的可靠性、安全性和性能。

      認(rèn)證;LDAP;Solr

      1 Solr概述

      Solr是一款用Java開發(fā)、基于Lucene的高性能全文搜索服務(wù),在Lucene基礎(chǔ)上對其進(jìn)行了擴(kuò)展,提供了比其更為豐富的查詢語言,支持可配置和可擴(kuò)展并對查詢性能進(jìn)行了優(yōu)化,同時它提供了一個完善的功能管理界面,是一款非常優(yōu)秀的全文搜索服務(wù)。SolrCloud是Solr提供的分布式高可用部署架構(gòu),一個SolrCloud集群可以包含多個Solr服務(wù)節(jié)點和一套Zookeeper集群。其中Zookeeper集群用于存儲SolrCloud集群的元數(shù)據(jù)信息,Solr客戶端可以通過Zookeeper集群連接到Solr服務(wù)器集群。

      Solr擁有支持用戶身份驗證和授權(quán)的安全框架。這允許驗證用戶的身份并限制對SolrCloud集群中的資源的訪問。在用戶認(rèn)證方面,SolrCloud集群可以支持用戶使用BasicAuthPlugin內(nèi)置插件進(jìn)行基本身份驗證,即簡單的用戶名和密碼認(rèn)證。

      使用基本身份驗證,必須先創(chuàng)建一個security.json文件,然后在security.json文件中配置一個authentication部分,其中定義一個用于基本身份驗證的“solr.BasicAuthPlugin”插件類,然后在創(chuàng)建文件時預(yù)置用戶名和密碼(例如:sha256(password+salt) hash),security.json文件內(nèi)容如下所示:

      "authentication":{

      "blockUnknown": true,

      "class":"solr.BasicAuthPlugin",

      "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}

      }

      或者可以稍后使用基本驗證API添加用戶名和密碼。配置完security.json文件,需要上傳到Zookeeper中,完成SolrCloud集群的基本身份認(rèn)證控制。

      2 原生缺陷

      從技術(shù)上來講,原生Solr提供的基本身份認(rèn)證方式,需通過修改并上傳security.json配置文件或通過調(diào)用API命令來執(zhí)行用戶名與密碼的增刪改操作,這種操作方式使用煩瑣、不便,極易出錯,且安全度較低。

      此外,當(dāng)今企業(yè)大數(shù)據(jù)應(yīng)用集群部署的組件繁多,為了便于統(tǒng)一管理,全網(wǎng)各組件都需要使用同一份用戶信息庫。而目前原生Solr提供的這種基本身份認(rèn)證方式是將用戶名、密碼保存在ZooKeeper的security.json文件中進(jìn)行統(tǒng)一管理,即Solr自己維護(hù)了一個Solr用戶管理模塊,該模塊無法方便地與其他組件共享用戶信息庫同步數(shù)據(jù)。

      3 改進(jìn)設(shè)計

      基于以上缺點,本文提出了一種基于LDAP協(xié)議的Solr用戶認(rèn)證的設(shè)計方案。

      LDAP是一款輕量級目錄訪問協(xié)議(Lightweight Directory Access Protocol,LDAP),屬于開源集中賬號管理架構(gòu)的實現(xiàn),支持眾多系統(tǒng)版本。LDAP提供并實現(xiàn)目錄服務(wù)的信息服務(wù),目錄服務(wù)是一種特殊的數(shù)據(jù)庫系統(tǒng),對于數(shù)據(jù)的讀取、瀏覽、搜索有很高的性能。目錄服務(wù)一般用來包含基于屬性的描述性信息并支持精細(xì)復(fù)雜的過濾功能,對搜索有很好的效果。

      OpenLDAP則是一種基于LDAP協(xié)議的開源實現(xiàn),OpenLDAP 服務(wù)器本質(zhì)上是一個為只讀訪問而優(yōu)化的非關(guān)系型數(shù)據(jù)庫。它主要用作地址簿查詢(如email客戶端)或?qū)Ω鞣N服務(wù)訪問做后臺認(rèn)證以及用戶數(shù)據(jù)權(quán)限管控。

      因為Openldap具有高效的檢索性能,以及支持復(fù)雜的過濾功能,所以很多公司和企業(yè)都將OpenLDAP作為各自系統(tǒng)統(tǒng)一的用戶管理服務(wù)器,他們將用戶和信息保存在LDAP服務(wù)器中,并建立了用戶與組的映射關(guān)系。

      因此本文將原生SolrCloud的用戶管理部分基于LDAP協(xié)議重新實現(xiàn),使用OpenLDAP來存儲Solr的用戶和組信息。

      具體設(shè)計流程如下:

      (1)Solr客戶端向Solr服務(wù)端進(jìn)行操作請求;

      (2)Solr服務(wù)端將請求中的用戶名和密碼加密發(fā)送至LDAP服務(wù)端進(jìn)行驗證;

      (3)驗證通過,則說明該操作的用戶合法,用戶認(rèn)證通過;反之,用戶不合法,不允許操作繼續(xù)進(jìn)行。

      同時考慮到LDAP服務(wù)器的高可用性,我們設(shè)計了兩臺LDAP服務(wù)器進(jìn)行雙主配置,保證了用戶數(shù)據(jù)進(jìn)行LDAP認(rèn)證的可靠性。

      4 改進(jìn)實現(xiàn)

      下面我們具體實現(xiàn)基于LDAP協(xié)議的Solr用戶認(rèn)證方案。

      (1)搭建LDAP Server雙主服務(wù)器。

      (2)構(gòu)造基于LDAP協(xié)議的Solr用戶認(rèn)證插件LDAPAuthPlugin。

      通過研究Solr源碼可以得知,所有的用戶認(rèn)證方式都是基于AuthenticationPlugin抽象類來實現(xiàn)的,因此我們可以構(gòu)造一個基于LDAP協(xié)議的Solr用戶認(rèn)證插件LDAPAuthPlugin。

      package org.apache.solr.security;

      import java.io.IOException;

      import java.util.Map;

      import javax.servlet.FilterChain;

      import javax.servlet.ServletRequest;

      import javax.servlet.ServletResponse;

      public class LDAPAuthPlugin extends AuthenticationPlugin {

      @Override

      public void close() throws IOException {

      //此處設(shè)置斷開LDAP服務(wù)器的代碼

      }

      @Override

      public void init(Map pluginConfig) {

      //此處設(shè)置連接LDAP服務(wù)器的代碼

      }

      @Override

      public boolean doAuthenticate(ServletRequest request, ServletResponse response, FilterChain filterChain)

      throws Exception {

      //此處獲取request請求中的用戶名和密碼,然后向LDAP服務(wù)器請求用戶認(rèn)證。

      //LDAP服務(wù)器認(rèn)證通過,則返回true;反之,返回false。

      //如LDAP服務(wù)器異常,則直接返回false。

      return false;

      }

      }

      (3)將基于LDAP協(xié)議認(rèn)證的Solr用戶認(rèn)證插件注冊到Solr安全管理文件security.json中。

      "authentication":{

      "blockUnknown": true,

      "class":"solr.LDAPAuthPlugin"

      }

      (4)配置完security.json文件,需要上傳到Zookeeper中,并重啟Solr集群所有服務(wù)器。

      經(jīng)過以上各個步驟,即可實現(xiàn)基于LDAP協(xié)議的Solr用戶認(rèn)證功能,進(jìn)而實現(xiàn)用戶認(rèn)證的統(tǒng)一管理,以提高集群系統(tǒng)的可靠性、安全性和性能。

      [1]Trey Grainger,Timothy Potter.Solr實戰(zhàn).電子工業(yè)出版社,2016.

      猜你喜歡
      身份驗證用戶名插件
      《護(hù)士進(jìn)修雜志》投稿程序
      自編插件完善App Inventor與樂高機(jī)器人通信
      電子制作(2019年22期)2020-01-14 03:16:34
      HID Global收購Arjo Systems擴(kuò)大政府身份驗證業(yè)務(wù)
      機(jī)智的快遞員
      故事會(2017年17期)2017-09-04 17:36:42
      MapWindowGIS插件機(jī)制及應(yīng)用
      更安全的雙重密碼保護(hù)
      CHIP新電腦(2015年3期)2015-04-02 17:55:46
      基于Revit MEP的插件制作探討
      身份驗證中基于主動外觀模型的手形匹配
      ASP.NET中的Forms身份驗證的研究
      ESET NOD32專家答疑等
      蒲江县| 信阳市| 濮阳县| 吕梁市| 河东区| 南汇区| 南澳县| 全南县| 彰化县| 开封市| 肇源县| 苏尼特右旗| 新巴尔虎右旗| 印江| 化州市| 堆龙德庆县| 双流县| 班玛县| 耒阳市| 无棣县| 商水县| 泸西县| 吴江市| 弥勒县| 区。| 蒙自县| 固始县| 萝北县| 泸州市| 石景山区| 松阳县| 来宾市| 油尖旺区| 简阳市| 双峰县| 汪清县| 黄石市| 东莞市| 珠海市| 达日县| 新丰县|