You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Apache Solr 8基础认证(Basic Authentication)无法弹出认证窗口问题

解决Solr 8基础认证未弹出登录窗口的问题

嘿,我来帮你排查下为什么你的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

火山引擎 最新活动