Apache Solr 8基础认证(Basic Authentication)无法弹出认证窗口问题
嘿,我来帮你排查下为什么你的Solr 8基础认证配置没生效。先看了你的security.json,结构是对的,但大概率是几个常见的小细节没做好,咱们一步步来:
1. 先搞对Solr Home的路径!
你说把security.json放在/opt/solr/server,但这不是Solr默认的Home目录哦!
- 如果是用包管理器安装的Solr,默认Solr Home是
/var/solr/data - 如果是手动解压启动的,默认是
/opt/solr/server/solr(注意是server下的solr子目录,不是server根目录)
要确认你的Solr实际用的是哪个Home,最简单的方法是看启动日志,或者执行命令:
solr status
找到输出里的「Solr home」字段,把security.json移到这个目录下,这是最常见的踩坑点!
2. 重启Solr让配置生效
Solr只会在启动时加载security.json,如果你是先启动Solr再放的配置文件,必须重启服务才能生效:
solr restart -p 8983
(如果你的Solr端口不是8983,换成你实际用的就行)
3. 检查配置文件的语法
虽然你的配置看起来没问题,但还是可以用本地工具校验下JSON格式,比如用jq命令:
jq . /path/to/your/security.json
如果输出正常,说明语法没问题;如果报错,就修正对应的语法错误(比如漏了逗号、引号不闭合这类小问题)。
另外,你给solr用户的密码哈希格式是对的(三部分组成:哈希值、盐、迭代次数),这部分不用改。
4. 确认没禁用安全插件
检查下Solr的启动参数里有没有-Dsolr.disable.security=true,如果有这个参数,安全插件会被直接禁用,自然不会弹出登录窗口。
- 包安装的话,可以看
/etc/default/solr.in.sh里的SOLR_OPTS配置 - 手动启动的话,看启动脚本里有没有加这个参数
如果有,去掉它再重启Solr。
5. 用API测试认证是否生效
如果以上步骤都做了还是没弹窗,可以用curl测试下API:
curl http://localhost:8983/solr/admin/security
如果返回401 Unauthorized,说明认证已经生效了,只是浏览器缓存或者页面加载的问题,清下浏览器缓存再刷新就行;如果还是能正常返回内容,那说明配置还是没加载,回到第一步再核对Solr Home路径。
你的security.json配置本身是没问题的:blockUnknown: true会拦截未认证请求,BasicAuthPlugin是正确的基础认证类,授权规则也给solr用户配了admin角色,只要把文件放对位置、重启服务,肯定能弹出登录窗口的!
内容的提问来源于stack exchange,提问作者Girija S




