【发布时间】:2015-11-17 05:51:56
【问题描述】:
我对 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
【问题讨论】:
-
我自己偶然发现了这个。从 5.4 开始,添加了更多基于角色的安全功能,并且我已经设法使用 here 中描述的规则锁定读取和更新。但是,管理面板本身仍然是敞开的。我们要做的就是需要基本身份验证才能访问 Solr 5 中的任何内容。
-
啊哈。发布赏金后不久,我看到this answer 实际上确实有解决方案,但它仅适用于 SolrCloud。 Solr 尚不支持独立模式下的基本身份验证。我假设他们在the APF JIRA 有一张票,但我找不到。
-
您没有在帖子中提及您是如何以及在何处创建 realm.properties。当您添加此内容时,您将不再依赖参考帖子,从而使此帖子能够自我维持。