2016-11-05 24 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