You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat中WAR包部署Solr 6.4.2认证配置:官方方法无效求指导

我之前刚好在Tomcat上WAR包部署的Solr 6.4.2里配置过认证,踩过不少坑,给你分享下亲测有效的步骤:

1. 先确认Solr Home路径

首先得保证你的Solr WAR在Tomcat中部署时已经正确指定了Solr Home——这是关键,因为认证配置文件要放在这里。可以通过以下方式确认:

  • 查看Tomcat的conf/Catalina/localhost/solr.xml(如果是单独部署的话),里面是否有类似这样的配置:
    <Context docBase="/path/to/your/solr.war" debug="0" crossContext="true">
      <Environment name="solr/home" type="java.lang.String" value="/path/to/your/solrhome" override="true"/>
    </Context>
    
  • 或者检查Solr应用的WEB-INF/web.xml里是否有solr/home的初始化参数。

2. 创建security.json配置文件

在你的Solr Home根目录下新建这个文件,用Basic认证的示例配置(你可以根据需求调整权限):

{
  "authentication": {
    "class": "solr.BasicAuthPlugin",
    "credentials": {
      "admin": "IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="
    }
  },
  "authorization": {
    "class": "solr.RuleBasedAuthorizationPlugin",
    "permissions": [
      {
        "name": "security-edit",
        "role": "admin"
      },
      {
        "name": "collection-admin-edit",
        "role": "admin"
      },
      {
        "name": "collection-admin-read",
        "role": "admin"
      },
      {
        "name": "update",
        "role": "admin"
      },
      {
        "name": "read",
        "role": "admin"
      }
    ],
    "user-role": {
      "admin": ["admin"]
    }
  }
}

注意:这里的密码是加密后的字符串,你需要用Solr自带的工具生成自己的密码:

java -cp solr-core-6.4.2.jar org.apache.solr.util.SolrCLI hash-password -p 你的密码

把生成的结果替换掉示例里的admin对应的值。

3. 修改Solr应用的web.xml

找到Tomcat中Solr应用的WEB-INF/web.xml,做两处修改:

3.1 添加BasicAuth过滤器

在文件中添加以下Filter配置,让Solr启用认证拦截:

<filter>
  <filter-name>SolrBasicAuthFilter</filter-name>
  <filter-class>org.apache.solr.servlet.BasicAuthFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>SolrBasicAuthFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

3.2 指定security.json路径

找到SolrDispatchServlet的<servlet>配置块,添加初始化参数:

<init-param>
  <param-name>solr.security.json</param-name>
  <param-value>${solr.home}/security.json</param-value>
</init-param>

这个参数会告诉Solr去哪里读取认证配置文件。

4. 调整文件权限

确保Tomcat运行用户对Solr Home目录和security.json有读写权限,不然Solr启动时读不到配置文件,认证会失效。

5. 重启Tomcat

做完所有修改后,重启Tomcat服务。再次访问Solr管理页面时,就会弹出用户名密码输入框,用你设置的admin和对应密码登录即可。

踩过的坑提醒

  • 不要直接在security.json里写明文密码,必须用Solr的加密工具生成,否则认证不生效。
  • 如果你的Solr有多个Core,不需要在每个Core的配置里重复设置,根目录的security.json会全局生效。
  • 如果启动后还是没有认证弹窗,检查Tomcat的日志,看是否有security.json加载失败的报错,大概率是路径或权限问题。

内容的提问来源于stack exchange,提问作者Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:58:18