​http://lucene.apache.org/solr/guide/7_7/basic-authentication-plugin.html#enable-basic-authentication​

Solr学习笔记(3)-Solr Admin UI 授权插件配置_身份验证

Solr具有支持用户身份验证和授权的安全框架。这允许验证用户的身份并限制对solr集群中资源的访问。

Solr包含一些现成的插件,并且可以使用下面描述的身份验证和授权框架开发其他插件。

所有身份验证和授权插件都可以与SOLR一起工作,无论它们是在solrcloud模式下运行还是在独立模式下运行。所有身份验证和授权配置(包括用户和权限规则)都存储在名为security.json的文件中。在独立模式下使用solr时,此文件必须位于$solr_主目录中(通常为server/solr)。使用solrcloud时,此文件必须位于ZooKeeper中。

下面的部分介绍如何启用security.json插件,并将它们放置在适合您操作模式的位置。

使用security.json启用插件

初始化任何类型的安全插件所需的所有信息都存储在security.json文件中。此文件包含两个部分,每个部分用于身份验证和授权。

Sample security.json
{
"authentication" : {
"class": "class.that.implements.authentication"
},
"authorization": {
"class": "class.that.implements.authorization"
}
}

/security.json文件在SOLR实例出现之前需要位于正确的位置,因此SOLR启动时启用了安全插件。有关如何使用security.json和solr的信息,请参阅下面的部分。

根据所使用的插件,其他信息将存储在security.json中,例如用户信息或创建角色和权限的规则。这些信息是通过Solr提供的每个插件的API添加的,或者在定制插件的情况下,通过您设计的方法添加的。

下面是一个更详细的security.json示例。在此,启用了基本身份验证和基于规则的授权插件,并添加了一些数据:

{
"authentication":{
"class":"solr.BasicAuthPlugin",
"credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}
},
"authorization":{
"class":"solr.RuleBasedAuthorizationPlugin",
"permissions":[{"name":"security-edit",
"role":"admin"}],
"user-role":{"solr":"admin"}
}}

在solr中使用security.json

在Solrcloud模式下

在配置solr使用身份验证或授权插件时,需要将security.json文件上载到zookeeper。以下命令在文件上载时写入文件-您也可以上载已在本地创建的文件。

>server/scripts/cloud scripts/zkcli.sh-zkhost localhost:2181-cmd put/security.json

'“authentication”:“class”:“org.apache.solr.security.kerberosplugin”'

请注意,此示例定义了用于身份验证的kerberosplugin。您将要根据您使用的插件修改此部分。

这个例子在命令行中也定义了security.json,但是您也可以在本地定义一个文件并将其上载到zookeeper。

根据您使用的身份验证和授权插件,您可能将用户信息存储在security.json中。如果是这样,我们强烈建议您在ZooKeeper节点中实现访问控制。有关如何启用此功能的信息,请参见ZooKeeper访问控制部分。

一旦security.json被上传到zookeeper,您应该使用适当的API来更新它。您可以手动编辑它,但必须注意删除任何版本数据,以便在所有ZooKeeper节点上对其进行正确更新。版本数据位于security.json文件的末尾,并将以字母“v”后跟数字的形式显示,如“v”:138。

在独立模式下

在独立模式下运行solr时,需要创建security.json文件,并将其放在$solr_主目录中进行安装(这与您找到solr.xml的位置相同,通常是server/solr)。

如果您使用的是遗留的扩展和分发,那么您将需要在集群的每个节点上放置security.json。

您可以使用身份验证和授权API,但是如果您使用的是旧的伸缩模型,则需要在每个节点上分别发出相同的API请求。如果愿意,还可以手动编辑security.json。

身份验证插件

身份验证插件通过对传入请求进行身份验证,有助于保护solr的端点。自定义插件可以通过扩展authenticationPlugin类来实现。

身份验证插件由两部分组成:

服务器端组件,它使用插件中定义的机制(如kerberos、basic auth或其他)截取并验证传入到solr的请求。

客户端组件,即httpclientconfigurer的扩展,它允许solrj客户端使用服务器理解的身份验证机制向安全的solr实例发出请求。

启用插件

在/security.json中指定身份验证插件,如下例所示:

{
"authentication": {
"class": "class.that.implements.authentication",
"other_data" : "..."}
}

在初始化期间,security.json的身份验证块中的所有内容都将作为插件的映射进行传递。

身份验证插件也可以通过在启动期间传入-dauthenticationplugin=<plugin class name>与独立的solr实例一起使用。

可用的身份验证插件

Solr具有以下身份验证插件的实现: