限制Glassfish中的Apache Solr访问。基本身份验证与防火墙

时间:2011-06-16 09:30:07

标签: authentication solr glassfish firewall solrj

我在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)。

您怎么看?

1 个答案:

答案 0 :(得分:0)

好的,我的解决方案实际上是使用防火墙而不是以某种方式修改Solr。