【发布时间】:2015-03-18 14:23:09
【问题描述】:
我对 solr 不是很熟悉。我已经成功安装了 solr。它正在使用码头网络服务器。我的 solr 版本是 4.10.3。它的管理页面不受密码保护。任何人都可以访问它。我想在 solr admin 上应用一个 paaword。我会怎么做?
【问题讨论】:
标签: solr sunspot-solr
我对 solr 不是很熟悉。我已经成功安装了 solr。它正在使用码头网络服务器。我的 solr 版本是 4.10.3。它的管理页面不受密码保护。任何人都可以访问它。我想在 solr admin 上应用一个 paaword。我会怎么做?
【问题讨论】:
标签: solr sunspot-solr
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
【讨论】:
/opt/solr/server/solr-webapp/webapp/WEB-INF/web.xml、/opt/solr/server/etc/jetty.xml 和 /opt/solr/server/etc/realm.properties。谢谢,你拯救了我的一天。
在使用 solr 6.1 和 jetty 运行的 solr admin 中启用身份验证
前置条件:
Solr 版本 6.1
Solr 在系统中运行成功
通过码头运行的 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/
您会发现浏览器要求输入username 和password。输入username 和password。
【讨论】:
由于为 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 端口。
【讨论】:
我也在处理 Solr v.4.10,这真的很烦人。没有一个所谓的“解决方案”对我有用。我最终在我的 Ubuntu 机器上安装了 Nginx,并将 :8983 端口代理到 docker,其中 Nginx 需要密码。这对我有用。
【讨论】:
如果你使用的是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 安装目录\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 文件,并在那里添加您的更改。
【讨论】: