我知道Spring Security适用于基于角色和权限的标准授权。我不确定的是这个场景:
系统中管理着10,000名员工,这些员工被组织到一个组织结构图(一个跨部门向谁报告的树)中。这些员工中的一些人是用户。这些用户仅允许访问其职责线中的员工(其在树中的分支/其员工的后代)。
所以我想知道现代Java (或其他)系统是如何管理这些检查的?Spring Security (ACL)可以做到这一点吗?如何对其进行建模?
我们的旧实现(多年前)是,当用户访问员工时,我们可以通过递归树来检查请求的员工是否为后代。但这不是理想的解决方案,我们希望使用新的解决方案。
发布于 2012-07-10 13:08:36
由于我已经在这个问题上工作了大约一个月,所以我可以给你我对这个问题的答案,但是可能还有更好的答案。
Spring Security中有一些角色层次结构,如果您使用ROLE_A > ROLE_B,那么ROLE_A将拥有ROLE_B拥有的所有授权。
所以这里有两个选项:
每个用户及其后代的
ROLE_USERi > ROLE_USERiDESC
但是(因为我不知道你的组织结构图)这可能是不够的,因为可能有很多这样的配对!不知何故,如果你的树有两个或三个级别(ROLE_USER最多有一个或两个上升者),那么它是合适的,因为角色越高,它拥有的权威就越多。
我为什么要这么做?因为我必须拥有某些操作的角色(比如编辑、删除、访问一些敏感数据等等)。和关爱团体来观察。
如果A是B的照顾者,它可以观察B的数据,但A不能做任何超出其权限的事情。
顺便说一句,它还没有完全测试,你可能会找到另一种可能的解决方案。
另请参阅:
发布于 2015-04-22 18:36:00
当我们谈论Spring安全性时,Spring提供了两件事。1)角色管理2) ACL (域级权限)我认为这里需要的是域级权限。
如果您计划使用角色管理,通过为每个用户创建相应的角色,数据可能会增长。第二种选择是使用域级权限(Spring ACL),这是一个很好的运行时授权框架。您可以将其用于基于注释的授权,但是管理API非常有限(BasicLookupStrategy),因此在使用它之前请仔细阅读文档。
https://stackoverflow.com/questions/11404968
复制相似问题