【问题标题】:Solr basic authentication permission settingsSolr 基本认证权限设置
【发布时间】:2019-05-05 05:27:42
【问题描述】:

我的目标是只有用户 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】:

我已经被同样的问题困扰了几天了,我已经找到了解决方案。

我有 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
}
}

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

示例:需要 index 1 权限才能禁止 mario 和 luigi 列出或创建集合。然而,使用collection_admin_edit 和collection_admin_read 的预定义权限会更好。因为通过仅在索引 1 处定义操作 LIST 和 CREATE,luigi 和 mario 仍然可以执行所有其他操作。在此示例中,我仍然能够使用上述权限集作为用户 luigi 删除 mario 集合。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多