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

Solr 8.6.1配置基础认证后访问返回401认证错误求助

Solr 8.6.1 基础认证配置后返回401错误修复方案

当前配置存在3个核心问题,按以下步骤排查修复即可:

  • JVM参数传递位置错误
    Solr Docker镜像的solr-foreground启动脚本不会直接读取拼接在命令后的-D开头参数,写在CMD里的两个认证相关系统属性根本没有被JVM加载,仅服务端加载了security.json的认证拦截规则,所有未携带正确认证头的请求(包括Solr内部初始化请求)都会被直接拦截返回401。
    不要把JVM参数拼在启动命令后,通过SOLR_OPTS环境变量传递即可,正确Dockerfile配置参考:
    ENV SOLR_OPTS="-Dsolr.httpclient.builder.factory=org.apache.solr.client.solrj.impl.PreemptiveBasicAuthClientBuilderFactory \
    -Dbasicauth=username:secret"
    CMD ["solr-foreground"]
    
  • security.json配置不符合规范
    能弹出用户名密码输入框仅代表认证插件被加载,不代表配置完整:
    1. 必须同时配置authorization授权规则,给设置的用户绑定对应访问角色,只开认证插件不配授权的话,就算密码正确也会被拦截
    2. credentials字段下不能直接填写明文密码,必须填写Solr生成的加盐SHA256哈希值,直接填明文会导致认证永远失败,哈希值可通过执行solr auth passwd -p 你的明文密码命令生成
      最小可用的security.json参考如下,文件需要存放在Solr数据根目录(一般路径为/var/solr/data/security.json),且要保证solr运行用户对文件有读权限:
    {
      "authentication": {
        "blockUnknown": true,
        "class": "solr.BasicAuthPlugin",
        "credentials": {
          "username": "替换为你生成的密码哈希值"
        },
        "realm": "Solr Basic Auth"
      },
      "authorization": {
        "class": "solr.RuleBasedAuthorizationPlugin",
        "permissions": [
          {"name": "all", "role": "admin"}
        ],
        "user-role": {
          "username": "admin"
        }
      }
    }
    
  • 配置校验步骤缺失
    修改配置重启后先做两步校验:
    1. 查看Solr启动日志,确认配置的两个-D系统属性已经被JVM正常加载
    2. 手动执行带认证信息的curl请求验证:curl -u username:你的明文密码 http://solr服务地址:8983/solr/admin/info/system,如果请求能正常返回系统信息,代表配置生效

注意:如果是容器启动后再手动拷贝security.json到数据目录,必须重启Solr服务才能完全加载配置,部分8.x版本存在热加载权限规则不生效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:48:15