2016-11-05 22 views
0

我正在开发基于Apache Jackrabbit的Web应用程序的自定义安全机制。我已经为我的需要扩展了标准的Jackrabbit安全实现,到目前为止它工作正常。但是,我遇到了多个主体在节点上被分配权限的问题。多个主体的Jackrabbit权限

例如,用户U是组G的成员。组G在节点上没有读取权限,但用户U具有读取权限。我的意思是,组G具有jcr:read特权设置为deny,并且用户U在节点上将jcr:read设置为allow

基于此,我假设用户U能够读取节点,即使他是不允许读取的组的成员。但是,节点不会显示给用户U(不是预期的),也不会显示给任何其他G组成员(预期的)。

有人能帮我解释一下吗?我的假设是正确的,还是Jackrabbit计算实际权限的方式不同?或者这只是我的安全实施中的错误?

+0

您还可以使用'Privilege [] AccessControlManager.getPrivileges(String absPath)'获取节点上当前会话的所有特权 – Aroniaina

+0

尝试下载JCR规范http://download.oracle.com/otndocs/jcp /content_repository-2.0-pfd-oth-JSpec。并确保你阅读它,如果你在JackRabbit上工作。访问控制管理位于第16条 – Aroniaina

回答

1

this article

The list of access rights applicable for the subject is constructed from: 

    - the rights that you assign directly to the user account 
    - plus all rights assigned to any of the groups that the user belongs to 

意味着兔崽子采取组权限,而不是用户的特权。您可以阅读整篇文章,这对JackRabbit的安全性很有帮助。

+0

感谢您的链接。这非常有帮助。但基于此,我认为用户优先: 优先顺序 CRX中的访问权限评估如下: - 用户主体始终优先于组主体,不管: 他们在访问控制列表中的顺序 它们在节点层次结构中的位置 – vdjurovic