用于层次结构树角色的Spring Security/Java EE解决方案

qta*_*ach 15 java spring spring-security security-roles java-ee

我知道Spring Security适用于标准角色和基于权限的授权.我不确定的是这种情况:

系统中管理着10,000名员工,员工组织成一个组织结构图(一个向各部门报告的人员树).其中一些员工是用户.这些用户仅被允许访问其职责范围内的员工(他们在树中的分支/其员工的后代).

所以我想知道现代Java EE(或其他)系统如何管理这些检查?Spring Security(ACL)可以执行此操作吗?如何对其进行建模?

我们的旧实现(多年前)是当用户访问员工时,我们可以通过递归树来检查所请求的员工是否是后代.但这不是理想的解决方案,我们希望使用新的解决方案.

Mat*_* Kh 6

由于我已经在这个问题上工作了一个月,我可以给你这个问题的答案,但是可能有更好的答案.
在Spring Security中有一些作为Role Hierarchy的东西,如果你使用ROLE_A> ROLE_B,那么ROLE_A将拥有ROLE_B所拥有的所有授权.
所以这里有两个选项:

1.对于每个用户及其后代都有一对像.用户的ROLE_USERi和后代的ROLE_USERiDESC.你将有
ROLE_USERi> ROLE_USERiDESC
但是(因为我不知道你的组织结构图)这可能是不够的,因为可能有很多这些对!不知何故,如果你的树有两个或三个级别(ROLE_USER最多只有一个或两个级别),那么它是合适的,因为角色越高,它拥有的权限就越大.

在我的项目中(偶然相似)我做了另一个选择.我有一些基本行为的基本角色.我有一个"照顾小组",照顾者可以在其中观察其后代数据.
我为什么要这么做?因为我必须拥有一些行动的角色(如编辑,删除,访问一些敏感数据......)和关怀群体来观察.
如果A是B的看护者,它可以观察B的数据,但A不能做任何超出其权限的事情.

顺便说一下,它尚未经过全面测试,您可能会找到另一种可能的解决方案.

也可以看看: