Solr 9证书认证配置异常求助:UI及curl授权问题排查
Solr 9 证书认证配置问题排查
当前配置文件
使用的security.json内容如下:
{"authentication": {"class":"solr.CertAuthPlugin","blockUnknown": true},"authorization": {"class": "solr.RuleBasedAuthorizationPlugin","user-role": {"CN = ***, O = ***, OU = **, L = **, ST = **, C = ***": ["admin"]},"permissions": [{"name": "read", "role": "dev"},{"name": "coll-read", "path": "/select", "role": "*"},{"name": "all","role": "admin"}]}}
遇到的问题
- 未配置
authorization块时,curl命令可正常完成认证,但Solr UI无法正常使用 - 添加
authorization块后,curl命令执行失败,返回403错误,尝试使用证书主体和颁发者值作为用户名均无效
问题分析与解决建议
问题1:无授权块时UI无法使用
仅启用CertAuthPlugin但未配置授权规则时,认证通过的用户不会被分配任何角色。而Solr UI需要读取配置、访问核心列表等操作权限,此类权限默认需要特定角色(如admin)才能触发,因此即使认证通过,也会因权限不足导致UI无法正常工作。
问题2:添加授权块后curl返回403
核心问题是user-role映射中的证书主体格式与Solr实际解析的内容不匹配:
- 确认证书主体的精确格式:Solr通过
CertAuthPlugin解析的证书主体严格遵循X.500格式,需确保user-role中的键与解析结果完全一致。可通过两种方式查看实际识别的用户名:- 查看Solr日志,认证过程中会输出当前用户的标识信息
- 临时关闭
blockUnknown,在无授权块的情况下调用/admin/info/system接口,返回结果的user字段即为解析后的用户名
- 修正映射格式:常见错误是主体字符串中多余的空格,比如
CN = ***应改为CN=***(等号前后无空格),这是X.500主体的标准格式。将user-role中的键替换为与日志/接口返回完全一致的字符串,示例:"user-role": {"CN=***,O=***,OU=**,L=**,ST=**,C=***": ["admin"]} - 验证权限规则:确认
permissions规则覆盖了你的curl请求路径——如果是写操作,admin角色已拥有all权限;如果是查询操作,coll-read规则允许所有角色访问/select路径,应能正常访问。
内容的提问来源于stack exchange,提问作者user16027182
相关产品推荐
相关产品推荐

