Spring Security Hierarchy Role系统

时间:2013-12-23 00:00:54

标签: java spring spring-security acl hierarchy

我希望你的帮助能够建立一个非常复杂的安全环境,我想知道我是否只能使用Spring层次结构系统甚至是弹簧ACL ......

我需要构建一个包含许多角色的安全环境,例如:

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

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

  

用户1具有=组1>公司1> func 1,func 2>方法1   用户2具有=组2>公司1,公司2> func 3>方法1,方法2

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

关于如何用弹簧安全解决它的任何想法?

1 个答案:

答案 0 :(得分:2)

如果它是真正动态的东西,那么Spring Security ACLs是一个很好的方法。对于每个组,company,func,method等在表ACL_SID中创建授予的权限。

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

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

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

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

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