到目前为止,这就是我为保护我的 SOLR 应用程序所做的工作。
在 SOLR 的 web.xml 文件中,我正在尝试执行以下操作
- 仅允许 /select 请求用户或管理员请求。
- 除了管理员之外,不允许对 SOLR 的所有其他请求。
我在 SOLR 的 web.xml 文件中添加了安全约束
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Admin</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Public</web-resource-name>
<url-pattern>/primary/select/*</url-pattern>
<url-pattern>/reindex/select/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
这就是我在客户端应用程序中实例化 SOLR HTTP 连接的方式
//primary core
HttpSolrServer primaryindex = new HttpSolrServer(serverUrl + "/" + PRIMARYINDEX);
HttpClientUtil.setBasicAuth((DefaultHttpClient) primaryindex.getHttpClient(), "user", "user");
//reindex core
HttpSolrServer reindex = new HttpSolrServer(serverUrl + "/" + REINDEX);
HttpClientUtil.setBasicAuth((DefaultHttpClient) reindex.getHttpClient(), "user", "user");
tomcat-users.xml 文件的角色和用户设置如下
<role rolename="user"/>
<user username="user" password="user" roles="user"/>
<user password="admin" roles="manager-script,admin" username="admin"/>
以上工作完美。显然在生产中我会有更强大的用户名和密码。
问题
我还需要其他什么来保护我的 SOLR 实例,或者以上内容就足够了吗?我有 1 个运行客户端应用程序和 SOLR 应用程序的 Tomcat 7 实例。这就是我想要达到的目标。
- 不想让任何人在没有用户名和密码的情况下登录管理员
- 不希望任何人访问我的客户端应用程序以外的核心
我可以在上述基础上向 SOLR 添加 Spring 安全性,但这有必要吗?