【SpringBoot 搜索系列】Solr 身份认证与授权更新异常解决方案

本文详细介绍了在Solr开启权限校验后,遇到的更新操作异常,提供了包括降级solr-solrj版本、指定HttpClient、使用HttpClient拦截器和SolrRequest进行身份验证的四种解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【搜索系列】Solr 身份认证与授权更新异常解决方案

之前介绍 solr 的教程中,solr 没有开启权限校验,所有的操作都是无需鉴权;当时提到,如果 solr 开启了权限校验,改一下 solr 的 host,带上用户名/密码即可,然而真实情况却并不太一样,查询 ok,涉及到修改的操作,则会抛异常

本文将带你了解一下,这到底是个什么鬼畜现象

I. Solr 配置用户登录

1. 安装

之前的 solr 系列教程中,通过 docker 安装的 solr,下面的步骤也是直接针对 docker 中的 solr 进行配置,基本步骤一样

具体可以参考:【搜索系列】Solr 环境搭建与简单测试

不想看的同学,直接用下面的命令即可:

docker pull solr
docker run --name my-solr -d -p 8983:8983 -t solr

 

2. 配置

下面一步一步教你如何设置用户密码,也可以参考博文: 手把手教你 对 solr8 配置用户登录验证[2]

进入实例,注意使用root用户,否则某些操作可能没有权限

docker exec  -u root -it my-solr /bin/bash

创建鉴权文件

vim server/etc/verify.properties

内容如下,格式为 用户名:密码,权限, 一行一个账号

root:123,admin

配置鉴权文件

vim server/contexts/solr-jetty-context.xml

添加下面的内容放在Configure标签内

<Get name="securityHandler">
   <Set name="loginService">
           <New class="org.eclipse.jetty.security.HashLoginService">
                  <Set name="name">verify—name</Set>
                  <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/verify.properties</Set>
           </New>
   </Set>
</Get>

修改 web.xml

vim server/solr-webapp/webapp/WEB-INF/web.xml

security-constraint标签下面,新增

<login-config>
		<auth-method>BASIC</auth-method>
		<!-- 请注意,这个name 和上面的Set标签中的name保持一致 -->
		<realm-name>verify-name</realm-name>
</login-config>

重启 solr,配置生效

docker restart my-solr

II. 场景复现

接下来介绍一下我们的环境

  • springboot: 2.2.1.RELEASE

  • solr: 8.0

1. 项目环境

搭建一个简单的 springboot 项目,xml 依赖如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值