如何设置Apache solr管理员密码

时间:2015-01-20 11:14:46

标签: solr sunspot-solr

我对solr不太熟悉。我成功安装了solr。它使用的是码头网络服务器。我的solr版本是4.10.3。管理员页面不受密码保护。任何人都可以访问它。我想在solr admin上应用paaword。我该怎么办?

6 个答案:

答案 0 :(得分:24)

在使用solr 6.1和jetty运行的solr admin中启用身份验证

前期条件:

  1. Solr版本6.1

  2. Solr在系统中成功运行

  3. Solr Admin穿过码头

  4. 流程:

    <强> 1。编辑jetty.xml

    编辑文件“server / etc / jetty.xml” 在配置标记结束

    之前添加以下内容
    <Call name="addBean">
          <Arg>
            <New class="org.eclipse.jetty.security.HashLoginService">
              <Set name="name">Test Realm</Set>
              <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
              <Set name="refreshInterval">0</Set>
            </New>
          </Arg>
        </Call>
    

    <强> 2。编辑webdefault.xml

    编辑文件“server / etc / webdefault.xml” 在 web-app 标记结束之前添加以下内容

    <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>core1-role</role-name>
        </auth-constraint>
      </security-constraint>
    
      <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>Test Realm</realm-name>
      </login-config>
    

    特别提示:

    角色名称标记中使用的值必须与“realm.properties”文件

    中使用的值相同

    第3。创建新文件“realm.properties”

    在“server / etc /”位置创建名为“realm.properties”的文件,并将以下内容放入

    admin: admin123,core1-role
    

    用户名: admin

    密码: admin123

    角色名称: core1-role

    (这需要与服务器/ etc / webdefault.xml文件中 role-name 标记中使用的名称相同)

    <强> 4。最后一步

    重新启动Solr服务器

    现在在浏览器中访问Solr http://localhost:8983/solr/ 您会发现浏览器要求usernamepassword。输入usernamepassword

    enter image description here

答案 1 :(得分:23)

适用于低于5的版本

如果您使用solr-webapp,则需要修改 web.xml 文件并添加以下行:

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr Lockdown</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>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Solr</realm-name>
  </login-config> 

对于Jetty服务器,您需要在 /example/etc/webdefault.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**</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test Realm</realm-name>
  </login-config>

更新 /example/etc/jetty.xml 文件

<Call name="addBean">
      <Arg>
        <New class="org.eclipse.jetty.security.HashLoginService">
          <Set name="name">Test Realm</Set>
          <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
          <Set name="refreshInterval">0</Set>
        </New>
      </Arg>
    </Call>

/example/etc/realm.properties

admin: s3cr3t, admin-role

用户名= 管理员 密码= s3cr3t 。 角色名称= admin-role

Solr版本5 +

最新的Solr版本文件夹结构发生了变化。您将在下面的文件夹路径中找到所有文件。

{SOLR_HOME} /server/etc/jetty.xml {SOLR_HOME} /server/etc/webdefault.xml

{SOLR_HOME}/server/etc/realm.properties创建新的凭据文件:

admin: s3cr3t, admin-role

有关详细信息,您可以帮助解决wiki docs

答案 2 :(得分:6)

如果您使用的是tomcat,

Open [Tomcat install dir]\tomcat-users.xml for editing.

<tomcat-user>元素中添加以下行并保存更改(使用您自己的用户名和密码):

<role rolename="solr_admin"/><user username="your_username"  password="your_password"  roles="solr_admin"/>

打开Tomcat安装dir \ webapps \ solr \ WEB-INF \ web.xml进行编辑。 路径中的“solr”是您要保护的实例的名称。通常这是“solr”,但如果您正在运行高级设置,则可能会有所不同。 在<web-app>元素中添加以下行:

<security-constraint>
<web-resource-collection>
  <web-resource-name>Solr Lockdown</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>
</security-constraint>


<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr</realm-name></login-config>

保存更改并重新启动Tomcat。通过启动新的浏览器会话并导航到您的站点来测试您的更改,例如。 http://localhost:8080/solr/系统会提示您输入凭据。

如果您的Tomcat安装dir tomcat-users.xml文件正在被修改 转到Project Explorer中的Servers下的tomcat-users.xml文件,然后在那里添加更改。

答案 3 :(得分:4)

为Solr设置密码是一件痛苦的事(对不起,但有时你必须按原样命名)我建议另一个解决方案:使用iptables限制对它的访问。

如果您安装Apache Solr Server,通常服务器将侦听端口8983.因此,服务器管理界面将在以下位置提供:

http://YOUR_SERVERS_IP:8983/solr/

因此我们可以按如下方式限制到端口8983的连接:

iptables -A INPUT -p tcp -s localhost --dport 8983 -j ACCEPT
iptables -A INPUT -p tcp -s YOUR_SERVERS_IP --dport 8983 -j ACCEPT
iptables -A INPUT -p tcp --dport 8983 -j DROP

这将接受来自localhost(第一行)和服务器IP本身(第二行)的所有请求,但删除所有其他连接(最后一行)。第二行不是必需的,但可以帮助我们轻松访问Solr的管理界面。要从本地计算机访问管理界面,我们必须首先将所有连接转发到服务器。最简单的方法是使用sshuttle(lazy mans VPN):

sshuttle --dns -r root@YOUR_SERVERS_IP 0/0

在我们想要访问管理界面的本地计算机上执行此命令。 另一个选择是,在开放的ssh客户端使用ssh隧道:

ssh -D 1080 root@YOUR_SERVERS_IP

在浏览器中设置socks代理到端口1080。

答案 4 :(得分:0)

我也在处理Solr v.4.10,这真的很烦人。所谓的“解决方案”都不适合我。我最终在我的Ubuntu盒子上安装了Nginx并将:8983端口代理到docker,其中Nginx需要密码。这对我有用。

答案 5 :(得分:0)

我只想告诉我案件的解决方案。实际上我的网站是用ajax编写的,这就是为什么通过设置passowrd也保护我的网站。所以它不是解决方案,如果solr必须由开放的互联网使用。因此,solr wiki指导下的最佳解决方案是使用node.js,nginex等代理作为给定的here

使用node.js代理并应用iptable规则(如上所述)解决了我的问题。