solr在5.0版本后,不再提供war包部署的方式,取而代之的内置的jetty服务。我们可以使用jetty的方式来限制web访问。
(1)在/usr/local/Cellar/solr/7.3.0/server/solr-webapp/webapp/WEB-INF/web.xml中增加以下字段:
<security-constraint>
<web-resource-collection>
<web-resource-name>solr</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>solr_admin</role-name>
<role-name>admin</role-name>
</auth-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr Admin</realm-name>
</login-config>
</security-constraint>
如下图所示:
其中BASIC就是验证用户名密码的方式。
(2)在/usr/local/Cellar/solr/7.3.0/server/etc/jetty.xml中增加Call标签:
<Call name="addBean">
<Arg>
<New >
<Set name="name">Solr Admin</Set>
<Set name="config">
/usr/local/Cellar/solr/7.3.0/server/etc/realm.properties
</Set>
</New>
</Arg>
</Call>
如下图所示:
config中指定密码文件的路径。
(3)在上述对应目录下建立realm.properties文件,就是密码文件:
admin:123456,solr_admin
如下图所示:
其中admin是用户名,123456是密码,solr_admin是角色role。
(4)然后重启solr即可,第一次就需要输入用户名 密码。