Spring security中acl的一些关键接口:
1、Acl : 每个领域对象有一个,并只有一个Acl对象,它的内部保存着AccessControlEntry (ace),记住这是Acl的所有者。 一个Acl不直接引用领域对象,但是作为替代的是使用一个ObjectIdentity。 这个Acl保存在ACL_OBJECT_IDENTITY 表里。
2、AccessControlEntry :一个 Acl 里有多个AccessControlEntry,在框架里常常略写成ACE。 每个ACE引用特别的Permission,Sid和Acl。 一个ACE可以授权或不授权(granting),包含审核设置。 ACE保存在ACL_ENTRY 表里。
3、Permission :一个 permission 表示特殊不变的位掩码,为位掩码和输出信息提供方便的功能。 上面的基本权限(位0到4)保存在BasePermission类里。
4、Sid :这个 ACL 模块需要引用主体(Princiapl)和GrantedAuthority[]。 间接的等级由Sid接口提供,简写成“安全标识”。 通常类包含PrincipalSid(表示主体在Authentication里)和GrantedAuthoritySid。 安全标识信息保存在ACL_SID 表里。
5、ObjectIdentity :每个领域对象(ACL_CLASS)放在ACl模型的内部,使用ObjectIdentity。 默认实现叫做ObjectIdentityImpl 。
6、AclService :获取给定的ObjectIdentity的适用的Acl。 内置的实现(JdbcAclService ),重审操作代理LookupStrategy 。 这个LookupStrategy为检索ACL信息提供高优化策略,使用批量检索(BasicLookupStrategy)然后支持自定义实现。
7、MutableAclService :保存修改后的Acl到持久层。如果没有需要,你可以不使用这个接口,负责创建和存储ACL实例。