这就是我们的 SOLR 实例所需要的
1) 除了 select 之外的所有 url 都需要 ip 和密码限制 2) select url 可以从任何 ip 访问,但需要密码才能访问。此密码与上面第 1 点使用的密码不同。此外,如果 ip 来自我们的内部网络,那么即使访问 select url 也不需要密码
简而言之,我们需要保护除 select 之外的所有内容,使其不受外界干扰(ip + 密码)。但对于 select,我们希望允许外界访问,因此没有 ip 限制,但他们需要用户名和密码才能访问。然而对于 select,对于某些 ip,我们甚至不希望有用户名和密码限制
如何实现这一点。提前谢谢大家
答案1
下面展示了如何使用 Tomcat 的 Valve 组件根据用户的 IP 地址过滤请求: http://wiki.apache.org/tomcat/FAQ/Security#Q6
您可以使用 Tomcat 基本身份验证来限制对特定 URL 模式的访问。
您的 Solr 应用程序的 web.xml:
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Admin and Update protection</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Hr core administration</web-resource-name>
<url-pattern>/coreHr/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>solradmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>En core administration</web-resource-name>
<url-pattern>/coreEn/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>solradmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Hr core update</web-resource-name>
<url-pattern>/coreHr/update*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>solradmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>En core update</web-resource-name>
<url-pattern>/coreEn/update*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>solradmin</role-name>
</auth-constraint>
</security-constraint>
tomcat-用户.xml:
<role rolename="manager"/>
<role rolename="admin"/>
<role rolename="solradmin"/>
<user username="mbo" password="mbo11" roles="manager,admin,solradmin"/>