W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
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)于上述的序號:
將您的設(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
使用基本身份驗證插件時需要記住一些事項:
身份驗證API允許修改用戶標(biāo)識和密碼。API為端點提供特定的命令來設(shè)置用戶詳細(xì)信息或刪除用戶。
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è)置任意屬性。唯一受支持的屬性是'blockUnknown'
curl --user solr:SolrRocks http://localhost:8983/solr/admin/authentication -H 'Content-type:application/json' -d '{
"set-property": {"blockUnknown":false}}'
在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);
將以下行添加到solr.in.sh或solr.in.cmd文件。此示例告訴bin/solr命令行使用“basic”作為認(rèn)證類型,并使用用戶名“solr”和密碼“SolrRocks”傳遞憑證:
SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: