背景:solr默认安装没带权限控制,每次进入页面直接操作都有点裸奔的感觉。要使用基本身份验证您必须先创建一个security.json文件,对于基本身份验证,security.json文件必须有一个authentication部分,它定义用于身份验证的类。可以在创建文件时添加用户名和密码(例如:sha256(password+salt) hash),或者可以稍后使用基本验证API添加。

 

1.示例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" 角色。

 

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

SolrCloud模式必须上传security.json到ZooKeeper。首先登入ZooKeeper终端,输入示例命令(内json字段已在上述说明)

#进入ZooKeeper终端
./zkCli.sh
#修改ZooKeeper内security.josn节点文件
set /security.json '{"authentication":{"blockUnknown":true,"class":"solr.BasicAuthPlugin","credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}},"authorization":{"class":"solr.RuleBasedAuthorizationPlugin","permissions":[{"name":"security-edit","role":"admin"}],"user-role":{"solr":"admin"}}}'

 

2.重启solr访问,此时solr必须输入用户名和密码进行登入验证,这里配置了用户名密码是:solr:SolrRocks

 Solr8.8安全控制,开启基本身份验证_Solr8.8

3.solr用户管理Api

#新增或修改密码(如果用户名存在,就修改密码,否则就创建用户)
curl --user solr:SolrRocks http://localhost:8983/api/cluster/security/authentication -H 'Content-type:application/json' -d '{"set-user": {"solr":"solr","tom":"tom"}}'#删除用户
curl --user solr:SolrRocks http://localhost:8983/api/cluster/security/authentication -H 'Content-type:application/json' -d '{"delete-user": ["tom"]}'

 

 Solr8.8安全控制,开启基本身份验证_Solr8.8_02