【问题标题】:Spring Security Hierarchy Role systemSpring Security Hierarchy 角色系统
【发布时间】:2014-01-11 04:37:20
【问题描述】:

我希望您帮助我构建一个认为相当复杂的安全环境,我想知道我是否只能使用 spring 层次角色系统甚至 spring ACL...

我需要构建一个有很多角色的安全环境,例如:

  • lvl 1 -(第 1 组,第 2 组...)
  • lvl 2 - (公司 1, 公司 2...)
  • lvl 3 -(功能 1,功能 2...)
  • lvl 4 -(方法一,方法二...)
  • lvl N - (N)

管理员用户将创建具有动态角色的用户,例如:

用户 1 有 = 组 1 > 公司 1 > 功能 1,功能 2 > 方法 1
用户 2 有 = 组 2 > 公司 1,公司 2 > 功能 3 > 方法 1,方法 2

这种结构很容易扩展到特定的细节,我害怕管理所有这些事情。

关于如何使用 spring security 解决它的任何想法?

【问题讨论】:

    标签: java spring spring-security acl hierarchy


    【解决方案1】:

    如果它真的是动态的,那么Spring Security ACLs 是一个很好的方法。对于每个组、公司、函数、方法等,在表 ACL_SID 中创建一个授予权限。

    然后为每个用户在 ACL_SID 中创建一个条目,并将 is principal 标志设置为 true。

    对于系统中要保护的每个域对象,在 ACL_OBJECT_IDENTITY 中创建一个 ACL,并通过在 ACL_ENTRY 中插入行来授予正确的权限。

    可以在 ACL_ENTRY 中同时插入授予和撤销条目,顺序很重要,这意味着可以在第 0 行撤销对组的访问,这将优先于第 1 行的授予。

    ACL 也可以在层次结构中组成,并且可以设置为继承或不继承父级。

    通常,只要基于角色的访问解决方案不能为给定的用例提供足够的灵活性,就会使用 ACL。

    【讨论】:

    • 这是一个非常好的方法,感谢清除我的头脑=)所以基本上我可以在系统周围放置@PreAuthorize,并在jsp中放置jstl来控制用户访问。谢谢
    • 我有一个类似的设置,我想知道当你有你提到的动态角色时如何实现角色层次结构(对于每个组、公司、函数、方法等,在表中创建一个授予权限ACL_SID。)
    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 2012-08-15
    • 2014-10-19
    • 2013-08-26
    • 1970-01-01
    相关资源
    最近更新 更多