如何设置 Apache solr 管理员密码

How to set Apache solr admin password

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

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

用户名=admin 密码 = 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

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

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

因为给 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

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

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

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

ssh -D 1080 root@YOUR_SERVERS_IP

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

我也在处理 Solr v.4.10,这真的很烦人。 None 所谓的 "solutions" 对我有用。我最终在我的 Ubuntu 盒子上安装了 Nginx,并将 :8983 端口代理到 docker,Nginx 需要密码。这对我有用。

我只想告知我的情况是什么解决方案。实际上我的网站是用 ajax 编写的,这就是为什么通过设置 passowrd 也可以保护我的网站。因此,如果开放式互联网必须使用 solr,则它不是解决方案。所以它的最佳解决方案由 solr wiki is to use proxies like node.js, nginex etc. as given here

指导

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

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

前置条件:

  1. Solr 版本 6.1

  2. Solr 运行 在系统

  3. 中成功
  4. 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

用户名:admin

密码:admin123

角色名称: core1-角色

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

4。最后一步

重启 Solr 服务器

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