【问题标题】:Implementing Spring Security Authorization with Group Ownership Model使用组所有权模型实现 Spring Security 授权
【发布时间】: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 或其他产品?

【问题讨论】:

    标签: spring spring-security


    【解决方案1】:

    Spring Security确实在一定程度上支持团体。

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

    ACL 条目附加到安全身份(简称 sid)。安全身份可以是主体(单个用户)或权限。在您的情况下,听起来您想使用后者将 ACL 规则应用于组。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-28
      • 2020-07-23
      • 2013-03-15
      • 2015-07-17
      • 1970-01-01
      • 2015-10-21
      • 2022-01-06
      • 2020-03-20
      相关资源
      最近更新 更多