我对solr不太熟悉。我成功安装了solr。它使用的是码头网络服务器。我的solr版本是4.10.3。管理员页面不受密码保护。任何人都可以访问它。我想在solr admin上应用paaword。我该怎么办?
答案 0 :(得分:24)
在使用solr 6.1和jetty运行的solr admin中启用身份验证
前期条件:
Solr版本6.1
Solr在系统中成功运行
Solr Admin穿过码头
流程:
<强> 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/
您会发现浏览器要求username
和password
。输入username
和password
。
答案 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)