【问题标题】:Where to manage ACL inheritance?在哪里管理 ACL 继承?
【发布时间】:2011-01-16 05:25:39
【问题描述】:

我应该在哪里最好地管理 ACL 的层次结构?

我看到了管理 ACL 层次结构的三种可能性:

1) ACL 本身管理层次结构:

class Acl {
  Acl parent;
  // ...
}

2) 构造一个单独的树结构来管理层次结构。

3) 使用已经存在的层次结构作为 ACL 的隐式层次结构(就像文件系统已经有层次结构一样)。

以下代码是使用现有层次结构的一种可能性:

interface AclHolder {
    Acl getAcl();
}

public class Folder implements AclHolder {
    private AclHolder parent;
    private Acl acl;

    @Override
    public Acl getAcl(){
        return acl==null ? parent.getAcl() : acl;
    }
}

另一种方法是使用规则来定义什么是分层的。

我认为像 1) 和 2) 那样创建显式 ACL 层次结构可能会有问题,因为这种层次结构通常必须反映系统结构并且是一种重复形式。

最好的方法是什么?

【问题讨论】:

    标签: security inheritance hierarchy acl


    【解决方案1】:

    出于性能原因,我决定不使用动态继承。继承对于用户来说只是一个方便的特性,但它不会直接在 ACL 中实现。更改会传播到子 ACL,但子 ACL 不知道其父 ACL。我将使用现有的层次结构(如文件系统中的层次结构)来执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多