Solr基本认证权限设置

问题描述 投票:1回答:1

我的目标是只有用户A可以读取集合1,只有用户B可以读取集合2。我认为,通过在预定义的“读取”之前添加集合属性可能会有所帮助,但没有这样做。我已经测试了很多方法,但是没有用。我在here中看到了该示例,但是没有用。现在我有:

Markdown and HTML are turned off in code blocks:
<i>This is not italic</i>, and [this is not a link](https://example.com)
{"authentication":{
"blockUnknown":true,
"class":"solr.BasicAuthPlugin",
"credentials":{...},
"":{"v":0}},
  "authorization":{
    "class":"solr.RuleBasedAuthorizationPlugin",
    "permissions":[
      {
        "name":"security-edit",
        "role":"admin",
        "index":1},
      {
        "name":"permission1",
        "collection":"collection1",
        "path":"/select",
        "role":"readColletion1",
        "index":2}],
"user-role":{
  "solr":"admin",
  "userA":"readColletion1",
  "userB":"readColletion2",},
"":{"v":0}}}

[当用户B仍然无缘无故访问collection1时。

以前有人做过吗?希望我能得到一些提示,谢谢!我被困了一整天...迫切需要帮助

solr basic-authentication solrj solrcloud user-roles
1个回答
0
投票

几天来,我一直遇到同样的问题,并且已经找到了解决方案。

我有2位用户luigi和mario是我的客户,这些客户可以使用我的solr实例,并且每个人都有自己的集合。他们不应以任何方式查看或使用不属于他们的任何收藏。

但是,他们每个人都可以完全访问自己的收藏集。

这是我的Solr 8.1.1解决方案

"authorization": {
"class": "solr.RuleBasedAuthorizationPlugin",
"permissions": [
  {
    "collection": null,
    "params": {
      "action": [
        "LIST",
        "CREATE"
      ]
    },
    "role": "admin",
    "index": 1
  },
  {
    "collection": "mario",
    "path": [
      "/*"
    ],
    "method": [
      "GET",
      "PUT",
      "POST",
      "DELETE",
      "HEAD"
    ],
    "role": "mario",
    "index": 2
  },
  {
    "collection": "luigi",
    "path": [
      "/*"
    ],
    "method": [
      "GET",
      "PUT",
      "POST",
      "DELETE",
      "HEAD"
    ],
    "role": "luigi",
    "index": 3
  }
],
"user-role": {
  "solr": "admin",
  "mario": "mario",
  "luigi": "luigi"
},
"": {
  "v": 17
}
}

您必须为系统中的每个角色定义权限,否则,具有未定义权限的角色可以执行任何操作。您还必须为要保护的每个动作定义一个权限,否则允许任何角色执行该动作。

示例:需要索引1许可才能禁止mario和luigi列出或创建收藏集。但是,最好使用collection_admin_edit和collection_admin_read的预定义权限。因为仅通过定义索引1处的LIST和CREATE动作,仍然允许luigi和mario执行所有其他动作。在此示例中,我仍然可以使用上述权限集以用户luigi的身份删除mario集合。

在这种情况下,我应该注意,solr documentation提到将最具限制性的权限放入索引1。因为对于每个请求,都是按照从上到下的顺序查询该权限的。

我希望这可以帮助遇到相同问题的任何人。

© www.soinside.com 2019 - 2024. All rights reserved.