如何配置Solr 9.2允许无凭证外部用户查询数据库且禁止访问控制台?
解决Solr 9.2匿名查询返回401的方案
1. 修改Solr安全配置文件
Solr的权限控制核心配置文件为server/solr/security.json(Mac默认安装路径,自定义安装则对应Solr Home目录下的该文件),需调整其中的授权规则,允许匿名用户执行查询操作:
打开文件,找到
authorization节点下的permissions数组,添加以下规则:{ "name": "allow-anonymous-query-get", "role": "*", "path": "/select", "method": "GET" }, { "name": "allow-anonymous-query-post", "role": "*", "path": "/select", "method": "POST" }其中
role: "*"表示允许所有角色(含匿名用户)访问/select路径的GET/POST请求。若文件中无完整的
authorization配置,可补充如下完整结构(替换原有加密密码):{ "authentication": { "class": "solr.BasicAuthPlugin", "credentials": { "admin": "你的加密管理员密码" }, "realm": "Solr", "forwardCredentials": false }, "authorization": { "class": "solr.RuleBasedAuthorizationPlugin", "permissions": [ { "name": "security-admin", "role": "admin" }, { "name": "allow-anonymous-query-get", "role": "*", "path": "/select", "method": "GET" }, { "name": "allow-anonymous-query-post", "role": "*", "path": "/select", "method": "POST" } ], "user-role": { "admin": ["admin"] } } }
2. 配置跨域访问(若外部请求为跨域场景)
如果外部用户的请求来自不同域名,需修改server/solr/webapp/WEB-INF/web.xml中的CORS过滤器配置:
- 找到
cross-origin过滤器块,确保参数设置允许跨域GET请求:<filter> <filter-name>cross-origin</filter-name> <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class> <init-param> <param-name>allowedOrigins</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>allowedMethods</param-name> <param-value>GET,POST,OPTIONS</param-value> </init-param> <init-param> <param-name>allowedHeaders</param-name> <param-value>origin, content-type, accept</param-value> </init-param> </filter> - 确保过滤器映射覆盖所有路径:
<filter-mapping> <filter-name>cross-origin</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3. 重启Solr服务
修改配置后需重启服务使设置生效,终端执行对应命令:
# Homebrew安装的Solr brew services restart solr # 手动下载安装的Solr(进入安装目录) bin/solr restart
4. 测试匿名查询
用Python的requests库验证配置效果:
import requests # 替换为你的Solr地址和核心名 query_url = "http://你的SolrIP:8983/solr/你的核心名/select?q=*:*" resp = requests.get(query_url) print(resp.status_code) print(resp.json())
若返回200状态码及查询结果,说明配置生效。
注意事项
- 仅开放查询权限给匿名用户,禁止赋予核心管理、数据修改等高权限,避免安全风险。
- 若Solr暴露在公网,建议通过防火墙或Jetty的IP白名单配置,限制访问来源IP范围。
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

