目录
全文检索 -- Solr -- Solr 身份验证配置
学习之前需要先启动 Solr
执行如下命令即可启动Solr:
solr start -p <端口>
如果不指定端口,Solr 默认的端口是8983
直接输入 solr start 启动就可以了;
显示:在8983端口上启动Solr服务器,等待长达30分钟。寻找快乐!
启用身份验证:
Solr为了支持权限控制,提供如下几种身份验证插件:
- Kerberos Authentication Plugin:Kerberos身份验证插件。
- Basic Authentication Plugin:基本身份验证插件。
- Hadoop Authentication Plugin:Hadoop身份验证插件。
- JWT Authentication Plugin:JWT身份验证插件。
启用基本身份验证插件:
(1)在Solr安装路径下的server\solr子目录下添加一个security.json文件,可在该文件中定义角色、用户。
security.json 文件内容如下:
(2)修改了 security 文件,需要打开小黑窗重启Solr,再次访问Web控制台则要求用户登录。
超级用户账户密码:root 32147
添加用户:
用curl命令
向 Solr 的 RESTful 接口发送添加用户的请求即可:
curl --user root:32147 -X POST ^
http://localhost:8983/solr/admin/authentication ^
-H 'Content-type:application/json' -d @users.json
其中users.json文件内容如下:
{"set-user": {"crazyit":"32147"}}
用 Postman
向 http://localhost:8983/solr/admin/authentication 发送POST请求,
请求的JSON数据为:{"set-user": {"ljh":"123456"}}
Postman 演示:
输入这个
再输入这个
添加用户成功后,可以看到 security.json 配置文件被修改了
如果直接在security文件里面把 root 用户的密码改成123456(如图,把 ljh 的123456这个密码的加盐加密后的字符串复制给root 就行)。
在配置文件改 root 用户的密码后, solr 需要重启才能生效
在postman 新增成功的 ljh 用户,就不需要重启solr就可直接登录成功,因为这个 ljh 用户的添加不是通过修改security文件得来的。
在postman新增的ljh用户,就不需要重启solr,可以直接登录
root 在配置文件该密码后,需要重启,才能生效:
重启后重新登录
删除用户:
用curl命令
向Solr的RESTful接口发送删除用户的请求即可:
curl --user root:32147 -X POST ^
http://localhost:8983/solr/admin/authentication ^
-H 'Content-type:application/json' -d @delete.json
其中delete.json文件内容如下:
{"delete-user": ["crazyit"]}
用Postman
向 http://localhost:8983/solr/admin/authentication 发送 POST 请求,请求的 JSON 数据为:{"delete-user": ["ljh"]}
其实所有用户最终都是放在security.json文件中管理的,该文件中只有密码不能直接修改,其他都可以直接修改。因为密码是加盐加密的。
Postman 演示:
请求类型是 DELETE 好像不支持,所以改成 POST 请求。
成功删除 ljh 这个用户
如图,security 配置文件的ljh用户的信息就没了
提示:
除了添加用户(添加用户需要输入加盐加密的密码),对用户的其他操作(如 删除用户、为用户添加权限等)都可以通过直接修改 security.json 文件来实现。