Solr基本身份驗證插件

2018-12-19 14:08 更新

Solr 可以支持用戶使用 BasicAuthPlugin 的基本身份驗證。

您還可以使用授權(quán)插件來配置Solr,使其具有在系統(tǒng)中執(zhí)行各種活動的權(quán)限。授權(quán)插件在“基于規(guī)則的授權(quán)插件”一節(jié)中進行了介紹。

啟用基本身份驗證

要使用基本身份驗證,您必須先創(chuàng)建一個security.json文件。這個文件以及它的放置位置將在“使用security.json啟用插件”一節(jié)中詳細(xì)介紹。

對于基本身份驗證,security.json文件必須有一個authentication部分,它定義用于身份驗證的類。可以在創(chuàng)建文件時添加用戶名和密碼(例如:sha256(password+salt) hash),或者可以稍后使用基本驗證API添加,如下所述。

該authorization部分與基本身份驗證無關(guān),但它是一個單獨的授權(quán)插件,旨在支持 fine-grained 用戶訪問控制。有關(guān)更多信息,請參閱基于規(guī)則的授權(quán)插件。

示例security.json顯示了如下所示的顯示兩個部分,以顯示這些插件是如何協(xié)同工作的:

{
"authentication":{ 【1】
   "blockUnknown": true, 【2】
   "class":"solr.BasicAuthPlugin",
   "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="} 【3】
},
"authorization":{
   "class":"solr.RuleBasedAuthorizationPlugin",
   "permissions":[{"name":"security-edit",
      "role":"admin"}], 【4】
   "user-role":{"solr":"admin"} 【5】
}}

在這個文件中定義了幾個東西,以下的解釋對應(yīng)于上述的序號:

  1. 啟用基本身份驗證和基于規(guī)則的授權(quán)插件。
  2. 參數(shù) "blockUnknown": true 表示不允許未經(jīng)身份驗證的請求通過。
  3. 已定義了一個名為 "solr" 的用戶,其中有密碼 "SolrRocks"。
  4. "admin" 角色已定義,并且具有編輯安全設(shè)置的權(quán)限。
  5. "solr" 用戶已被定義為 "admin" 角色。

將您的設(shè)置保存到名為security.json的本地文件中。如果您在獨立模式下使用Solr,則應(yīng)將此文件放在 $SOLR _home 中。

如果blockUnknown沒有出現(xiàn)在security.json文件中,它將默認(rèn)為false。這具有不需要身份驗證的效果。在某些情況下,你可能需要這個;例如,如果您想要使用security.json,但尚未準(zhǔn)備好啟用身份驗證。但是,您需要確保將此參數(shù)設(shè)置為true,以便在您的系統(tǒng)中真正啟用身份驗證。

如果您正在使用SolrCloud,則你必須上傳security.json到ZooKeeper。您可以使用這個示例命令,確保ZooKeeper端口是正確的:

bin/solr zk cp file:path_to_local_security.json zk:/security.json -z localhost:9983

注意事項

使用基本身份驗證插件時需要記住一些事項:

  • 憑據(jù)默認(rèn)情況下以純文本形式發(fā)送。建議在啟用基本身份驗證時使用 ssl 進行通信,如啟用S??SL一節(jié)中所述。
  • 有權(quán)訪問security.json寫入權(quán)限的用戶將能夠修改所有權(quán)限以及如何為用戶分配權(quán)限。應(yīng)特別注意只授予對適當(dāng)用戶的編輯安全性的訪問權(quán)限。
  • 您的網(wǎng)絡(luò)當(dāng)然應(yīng)該是安全的。即使啟用了基本身份驗證,也不應(yīng)該不必要地將Solr公開給外部世界。

編輯身份驗證插件配置

身份驗證API允許修改用戶標(biāo)識和密碼。API為端點提供特定的命令來設(shè)置用戶詳細(xì)信息或刪除用戶。

API入口點

admin/authentication

此端點不是特定于集合的,因此將為整個Solr集群創(chuàng)建用戶。如果用戶需要被限制到特定的集合,那么可以使用授權(quán)規(guī)則來完成。

添加用戶或編輯密碼

該set-user命令允許您添加用戶并更改其密碼。例如,以下定義了兩個用戶及其密碼:

curl --user solr:SolrRocks http://localhost:8983/solr/admin/authentication -H 'Content-type:application/json' -d '{
  "set-user": {"tom" : "TomIsCool" ,
               "harry":"HarrysSecret"}}'

刪除一個用戶

該delete-user命令允許您刪除用戶。用戶密碼不需要發(fā)送來刪除用戶。在下面的例子中,我們要求將用戶ID “tom”和“harry”從系統(tǒng)中刪除。

curl --user solr:SolrRocks http://localhost:8983/solr/admin/authentication -H 'Content-type:application/json' -d  '{
 "delete-user": ["tom","harry"]}'

設(shè)置屬性

為身份驗證插件設(shè)置任意屬性。唯一受支持的屬性是'blockUnknown'

curl --user solr:SolrRocks http://localhost:8983/solr/admin/authentication -H 'Content-type:application/json' -d  '{
 "set-property": {"blockUnknown":false}}'

在SolrJ中使用BasicAuth

在SolrJ中,需要為每個請求設(shè)置基本認(rèn)證憑證,如下例所示:

SolrRequest req ;//create a new request object
req.setBasicAuthCredentials(userName, password);
solrClient.request(req);

查詢例子:

QueryRequest req = new QueryRequest(new SolrQuery("*:*"));
req.setBasicAuthCredentials(userName, password);
QueryResponse rsp = req.process(solrClient);

使用BasicAuth命令行腳本

將以下行添加到solr.in.sh或solr.in.cmd文件。此示例告訴bin/solr命令行使用“basic”作為認(rèn)證類型,并使用用戶名“solr”和密碼“SolrRocks”傳遞憑證:

SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號