2

我正在使用新的 Spring Security 3.1 并且对 Spring Security ACL 有几个问题。

  1. 因此,假设我有一个对象并想为它定义一个 ACL。我创建了一个 ACL 条目并希望将其分配给一组用户;不是一个角色 ( GrantedAuthoritySid),不是一个用户 ( PrincipalSid),而是一组用户。我到处研究了一个例子,但找不到任何例子。您能否指出一个在这种情况下对我有帮助的示例或课程?

  2. 所以现在我想创建与第一个对象相关的第二个对象(它应该适用于相同的用户)。例如,这可能是第一个对象的状态更新。My GrantedAuthorityorPrincipal对第二个对象有不同的权限掩码。第一个对象也有 2 GrantedAuthorities(2 ACLEntries),而状态更新只有一个。如果我使用 ACL 继承,则第一个对象的权限集与第二个对象的权限集不匹配。我的问题是如何对此进行建模,以便GrantedAuthorities两个对象的 自动保持一致,同时保留不同的权限掩码。一个想法是使用复合模式将GrantedAuthority第二个对象的链接GrantedAuthority到第一个对象的 (而不是将其链接到用户)。

  3. ACL 有一个所有者。楼主是为了什么?它对 ACL 或 ACL 条目起什么作用?

4

2 回答 2

1

这有点复杂。我对Spring源代码进行了逆向工程以了解原理,这花了我很多时间。我不能确切地告诉你我是如何实现它的(因为它对我从事的项目非常具体),但会尽量给你一个起点。

我所做的是:

  • 实现一个自定义org.springframework.security.acls.sid.Sid. 这Sid引用的不是一个authorityuser一种 gr​​oupobject,它有一个 id 并引用两个不同的对象。要将此 groupobject 用作​​ an,Sid您必须创建一个ACL_Sid-record,id并将 object 的 用作ACL_sid.sidACL_sid.principal必须是除 0 或 1 以外的整数,必须在自定义测试中进行检查LookupStrategy(参见下文和 Spring 源代码)。
  • 扩展以从数据库org.springframework.security.acls.sid.SidRetrievalStrategyImpl中检索自定义。Sid
  • 实现一个自定义org.springframework.security.acls.jdbc.LookupStrategy. 我复制了一个现有的实现(因为该类是最终的)并根据我的需要对其进行了修改。
  • 在 spring 配置中将所有内容连接在一起,因为默认的 Spring ACL 配置不需要它必须使用哪些类(而不是默认值)

查看 Spring 源代码,看看它是如何完成的。

于 2011-11-09T09:56:33.567 回答
0

要将对象分配给一组用户,每个用户都应该有一个针对同一对象的 ACL 条目。这可能会导致大量的 ACL 记录。

于 2011-08-08T21:23:01.723 回答