我对Solr很新,我在过去的一天半研究这个问题,最后转向这里。
我已启动并运行Solr服务器,并让我的网络管理员在防火墙中配置规则,以便我们可以从我的JavaScript应用程序访问它。这有效。我的问题是Solr管理页面是完全对世界开放的,我已经尝试了各种帖子中描述的所有内容,但ZooKeeper方法除外,我真的不想尝试因为我对设置不感兴趣ZooKeeper和SolrCloud。
参考文章:http://muddyazian.blogspot.com/2013/11/how-to-require-password-authentication.html和其他一些
我所做的是修改 / opt / solr / server / etc 中的 jetty.xml 并添加此
<Call name="addBean">
<Arg>
<New class="org.eclipse.jetty.security.HashLoginService">
<Set name="name">Solr Admin Access</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
<Set name="refreshInterval">0</Set>
</New>
</Arg>
</Call>
然后我在 / opt / solr / server / solr-webapp / webapp / WEB-INF 下面的配置中添加 web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr authenticated application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr Admin Access</realm-name>
</login-config>
然后我根据这篇文章创建了一个realm.properties文件哈希密码Jetty/SOLR Admin Panel Password
Solr现在是安全的,但一切都受密码保护,我希望我的查询是开放的,其余的都受到保护。我尝试添加不同的url模式,如/ admin / *,/ mycollection / dataimport / *等,但这些似乎都不会影响查询也是安全的事实。参考https://gist.github.com/jstrassburg/9777027
答案 0 :(得分:3)
根据Exclude a JSP from web.xml's security-contraint的建议,您可以保持配置不变,但公开您希望公开的端点。
因此,您可以在 web.xml 中添加<security-constraint>
这样的内容,但请忽略匹配<auth-constraint>
的{{1}}。这将使其向公众开放。除了使用Solr实例的其余部分的基本身份验证之外,您还可以逐步公开应该公开的核心或处理程序。
<url-pattern>
需要注意的是,您需要添加任何作为自己的URL模式公开。但这也可能是一个加分,因为您可以选择对集合进行细粒度的访问控制 - 例如每个集合一个用户。