我正在开发基于Apache Jackrabbit的Web应用程序的自定义安全机制。我已经为我的需要扩展了标准的Jackrabbit安全实现,到目前为止它工作正常。但是,我遇到了多个主体在节点上被分配权限的问题。多个主体的Jackrabbit权限
例如,用户U是组G的成员。组G在节点上没有读取权限,但用户U具有读取权限。我的意思是,组G具有jcr:read
特权设置为deny
,并且用户U在节点上将jcr:read
设置为allow
。
基于此,我假设用户U能够读取节点,即使他是不允许读取的组的成员。但是,节点不会显示给用户U(不是预期的),也不会显示给任何其他G组成员(预期的)。
有人能帮我解释一下吗?我的假设是正确的,还是Jackrabbit计算实际权限的方式不同?或者这只是我的安全实施中的错误?
您还可以使用'Privilege [] AccessControlManager.getPrivileges(String absPath)'获取节点上当前会话的所有特权 – Aroniaina
尝试下载JCR规范http://download.oracle.com/otndocs/jcp /content_repository-2.0-pfd-oth-JSpec。并确保你阅读它,如果你在JackRabbit上工作。访问控制管理位于第16条 – Aroniaina