我在Glassfish中部署了Apache Solr实例,我通过Solrj从Java代码中使用此Solr实例。问题是,我想限制对Solr的访问,以便只有这个Java代码才能访问它(代码可以从不同的IP地址运行)。
我的第一个想法是更改部署的Solr实例的web.xml
以使用Glassfish的基于文件的Realms添加基本身份验证,因为我使用它来限制对另一个项目中的REST接口的访问。所以我在Solr web.xml中添加了以下几行:
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<description>has to be a USER</description>
<role-name>USERS</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>userauth</realm-name>
</login-config>
<security-role>
<role-name>USERS</role-name>
</security-role>
但不知何故,这件事对Solr访问不起作用。我没有得到身份验证对话框,这很奇怪,因为它在另一个设置中工作。
一般来说,这种保护Solr实例的方法是一种好方法还是我应该尝试另一种方法?在Solr Security page中,他们谈论防火墙Solr实例。我不是Linux管理员,但我认为iptables是一个可能的解决方案,并且在 serverfault 上有一些很好的答案(例如this one)。
您怎么看?
答案 0 :(得分:0)
好的,我的解决方案实际上是使用防火墙而不是以某种方式修改Solr。