Solr基本身份验证插件

2018-12-19 14:08 更新

Solr 可以支持用户使用 BasicAuthPlugin 的基本身份验证。

您还可以使用授权插件来配置Solr,使其具有在系统中执行各种活动的权限。授权插件在“基于规则的授权插件”一节中进行了介绍。

启用基本身份验证

要使用基本身份验证,您必须先创建一个security.json文件。这个文件以及它的放置位置将在“使用security.json启用插件”一节中详细介绍。

对于基本身份验证,security.json文件必须有一个authentication部分,它定义用于身份验证的类。可以在创建文件时添加用户名和密码(例如:sha256(password+salt) hash),或者可以稍后使用基本验证API添加,如下所述。

该authorization部分与基本身份验证无关,但它是一个单独的授权插件,旨在支持 fine-grained 用户访问控制。有关更多信息,请参阅基于规则的授权插件。

示例security.json显示了如下所示的显示两个部分,以显示这些插件是如何协同工作的:

{
"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】
}}

在这个文件中定义了几个东西,以下的解释对应于上述的序号:

  1. 启用基本身份验证和基于规则的授权插件。
  2. 参数 "blockUnknown": true 表示不允许未经身份验证的请求通过。
  3. 已定义了一个名为 "solr" 的用户,其中有密码 "SolrRocks"。
  4. "admin" 角色已定义,并且具有编辑安全设置的权限。
  5. "solr" 用户已被定义为 "admin" 角色。

将您的设置保存到名为security.json的本地文件中。如果您在独立模式下使用Solr,则应将此文件放在 $SOLR _home 中。

如果blockUnknown没有出现在security.json文件中,它将默认为false。这具有不需要身份验证的效果。在某些情况下,你可能需要这个;例如,如果您想要使用security.json,但尚未准备好启用身份验证。但是,您需要确保将此参数设置为true,以便在您的系统中真正启用身份验证。

如果您正在使用SolrCloud,则你必须上传security.json到ZooKeeper。您可以使用这个示例命令,确保ZooKeeper端口是正确的:

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

注意事项

使用基本身份验证插件时需要记住一些事项:

  • 凭据默认情况下以纯文本形式发送。建议在启用基本身份验证时使用 ssl 进行通信,如启用S​​SL一节中所述。
  • 有权访问security.json写入权限的用户将能够修改所有权限以及如何为用户分配权限。应特别注意只授予对适当用户的编辑安全性的访问权限。
  • 您的网络当然应该是安全的。即使启用了基本身份验证,也不应该不必要地将Solr公开给外部世界。

编辑身份验证插件配置

身份验证API允许修改用户标识和密码。API为端点提供特定的命令来设置用户详细信息或删除用户。

API入口点

admin/authentication

此端点不是特定于集合的,因此将为整个Solr集群创建用户。如果用户需要被限制到特定的集合,那么可以使用授权规则来完成。

添加用户或编辑密码

该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命令允许您删除用户。用户密码不需要发送来删除用户。在下面的例子中,我们要求将用户ID “tom”和“harry”从系统中删除。

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

设置属性

为身份验证插件设置任意属性。唯一受支持的属性是'blockUnknown'

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

在SolrJ中使用BasicAuth

在SolrJ中,需要为每个请求设置基本认证凭证,如下例所示:

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”作为认证类型,并使用用户名“solr”和密码“SolrRocks”传递凭证:

SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:SolrRocks"
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号