安全(又名权限)和Lucene - 如何?它应该完成吗?

mP.*_*mP. 19 security lucene

首先是我的问题的一些背景.

  • 个别实体可以阅读权限.
  • 如果用户未通过读取权限检查,则无法看到该实例.

问题涉及引入Lucene并执行仅返回匹配实体实例列表的搜索.然后我的代码需要逐个过滤实体.这种方法非常低效,因为存在这样的情况:用户可能只能看到少数人并且检查许多人返回少数不太理想.

开发人员如何解决这个问题的方法或方法 - 请记住使用Lucene执行索引和搜索?

编辑

定义

  • 用户可能属于许多组.
  • 角色可能有很多组 - 这些组可能会发生变化.
  • 权限具有角色 - (间接).
  • X可以具有读取权限.
  • 角色的定义可以随时更改.

索引

  • 在索引时添加组(扩展Permmission)可能会导致定义在角色的成员组列表更改时变得不同步.
  • 我希望每当权限/角色的定义发生变化时,都要避免重新索引X.

安全检查

  • 要传递权限检查,用户必须属于属于给定权限的角色的组集内的组.

Hak*_*onB 7

它取决于您的上下文中相关的不同安全组的数量以及安全性如何应用于索引数据.

我们遇到了类似的问题,我们通过以下方式解决了这个问题:索引时我们将允许的组添加到文档中,并且在搜索时我们添加了一个布尔查询,其中包含用户所属的组.这在我们的场景中表现良好.