使用组所有权模型实施Spring Security授权

时间:2016-02-22 03:52:34

标签: spring spring-security

我正在处理使用组模型分配域对象所有权的应用程序。我正在寻找帮助确定Spring Security是否适合授权。

小组模特:

系统有组。组是具有某种授权以在该组中执行操作的用户的集合。例如,用户"莎莉"可能是小组成员" A组"并拥有" DATA_EDITING"在该组中的角色。

输入系统的数据被分配给一个组,该组的用户成员"拥有"该数据并可根据其在组中的角色对其进行操作。因此,例如,用户" Sally"上面可以编辑(CRUD)分配给" A组"。

的所有数据

换句话说,每个域对象都分配给"组",每个组都有一个或多个具有一个或多个角色的成员(用户)。

这意味着单个域对象被拥有"由1个或更多" principal",但只能通过域对象和主要的共享组传递。

我目前的研究:

在阅读Spring Docs时,似乎Spring模型最适合的特性是Spring ACL。我的理解是我可以创建基于用户/主体的ACL(在DAOS中),使用我的"组"以这种方式,Spring Security真的不知道我们的团队模型,但从用户的角度来看,没有什么会改变。换句话说,"莎莉"以上仍然能够"思考"在组中,但在数据库级别,仍然可以使用基于用户/主体的ACL进行授权。域对象的DAO会将Sally的组成员身份转换为该域对象的标准ACL。

这种方法可行,还是使用Spring Security或其他产品有更好的方法(保留组模型)?

1 个答案:

答案 0 :(得分:0)

Spring Security 在某种程度上支持

权限属于ROLE_USERROLE_ADMIN等典型案例角色,但也可以是GROUP_A等群组成员身份。基本上,您可以在身份验证期间使用您想要的内容填充Authentication对象。

ACL条目附加到安全标识(简称sid)。安全标识可以是主体(单个用户)授权。在您的情况下,您似乎想要使用后者将ACL规则应用于组。

是的,您可以在Spring Security中控制组级别的访问权限。