【问题标题】:How to set Apache solr admin password如何设置 Apache solr 管理员密码
【发布时间】:2015-03-18 14:23:09
【问题描述】:

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

【问题讨论】:

    标签: solr sunspot-solr


    【解决方案1】:

    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。 角色名称 = 管理员角色

    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
    

    有关更多信息,您可以帮助 solr wiki docs

    【讨论】:

    • 我正在使用码头。我按照您的指示进行操作,但不适用于我的情况
    • 我已经更新了答案,尝试相应地进行上述更改,并让我知道它是否有效。它对我有用。更新网址 /.
    • 这是有效的,管理员现在是安全的,但 REST 端点(例如 example.com:8983/solr/mycore/select?q=*%3A*&wt=json&indent=true)也是现在正在认证中。我怎样才能只保护管理 Web 界面,但不通过身份验证保留 REST 端点?
    • 这对我有用。但是,我没有更改 webdefault.xml,而是在运行 solr 的路径中进行了所有更改。 /opt/solr/server/solr-webapp/webapp/WEB-INF/web.xml、/opt/solr/server/etc/jetty.xml/opt/solr/server/etc/realm.properties。谢谢,你拯救了我的一天。
    • 它是否适用于 solr7.4.0,因为添加上述所有属性后,我的 solr 没有启动
    【解决方案2】:

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

    前置条件:

    1. Solr 版本 6.1

    2. Solr 在系统中运行成功

    3. 通过码头运行的 Solr Admin

    流程:

    1.编辑 jetty.xml

    编辑文件“server/etc/jetty.xml” 在 Configure 标签结束前添加以下内容

    <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>
    

    特别说明:

    role-name 标记中使用的值需要与 “realm.properties” 文件中使用的值相同

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

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

    admin: admin123,core1-role
    

    用户名:管理员

    密码: admin123

    角色名称: core1-role

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

    4.最后一步

    重启 Solr 服务器

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

    【讨论】:

    • 前两步是干什么用的?
    • 密码哈希也被接受 - admin: MD5:,
    • 是否可以将此身份验证列入特定 IP 地址范围的白名单?
    • 如果它不起作用,请在 /opt/solr-6.6.2/server/etc/realm.properties 中创建 creds 文件
    • 不工作,页面(重启服务器后),显示503错误“服务不可用”(版本7.4.0)
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      由于为 Solr 设置密码很麻烦(对不起,但有时您必须按原样命名)我提出了另一种解决方案:使用 iptables 限制对其的访问。

      如果您安装 Apache Solr 服务器,服务器通常会侦听端口 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 端口。

      【讨论】:

      • 如果我在上面使用,那么它如何服务到我们的网络客户端。那是一个网站是ajax
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        如果你使用的是tomcat,

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

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

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

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

        <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 安装目录 tomcat-users.xml 文件正在被修改,那么 转到 Project Explorer 中 Servers 下的 tomcat-users.xml 文件,并在那里添加您的更改。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多