【发布时间】:2016-06-03 09:37:37
【问题描述】:
我正在开发一个使用组模型来分配域对象所有权的应用程序。我正在寻求帮助来确定 Spring Security 是否适合进行授权。
组模型:
系统有组。组是具有某种授权在该组中执行操作的用户的集合。例如,用户“Sally”可能是组“Group A”的成员,并且在该组中具有“DATA_EDITING”角色。
输入系统的数据被分配给一个组,该组的用户成员“拥有”该数据并可以根据他们在组中的角色对其进行操作。因此,例如,上面的用户“Sally”可以编辑(CRUD)分配给“A 组”的所有数据。
换句话说,每个域对象都分配给一个“组”,每个组都有一个或多个成员(用户),具有一个或多个角色。
这意味着单个域对象由 1 个或多个“主体”“拥有”,但只能通过域对象和主体的共享组传递。
我目前的研究:
在阅读 Spring Docs 时,似乎 Spring Security 最适合该模型的特性是 Spring ACL。我的理解是,我可以创建基于用户/主体的 ACL(在 DAOS 中),以这样的方式使用我的“组”,Spring Security 真的不知道我们的组模型,但从我们用户的角度来看,什么都不会改变。换句话说,上面的“Sally”仍然可以分组“思考”,但在数据库级别授权仍将使用基于用户/主体的 ACL 完成。域对象的 DAO 会将 Sally 的组成员身份转换为该域对象的标准 ACL。
这种方法可行,还是有更好的方法(保留组模型)使用 Spring Security 或其他产品?
【问题讨论】: