2016-11-05 5 views
0

Apache Jackrabbitに基づくWebアプリケーションのカスタムセキュリティスキームを開発しています。私は標準のJackrabbitセキュリティ実装を自分のニーズに合わせて拡張しましたが、これまでのところ正しく動作しています。しかし、私は、複数のプリンシパルにノードのパーミッションが割り当てられているときに問題が発生しています。複数のプリンシパルのJackrabbit権限

たとえば、ユーザUはグループGのメンバーです。グループGにはノードに対する読み取り権限はありませんが、ユーザUには読み取り権限があります。つまり、グループGはjcr:read特権がdenyに設定されており、ユーザーUはノード上でallowに設定されており、jcr:readに設定されています。

これに基づいて、ユーザーUは、読み込みが許可されていないグループのメンバであっても、ノードを読み取ることができると思います。ただし、ユーザーU(想定されていない)、またはグループGの他のメンバー(予想される)のノードは表示されません。

誰かが私にこれについていくつかの光を当てることができますか?私の仮定は正しいのですか、Jackrabbitは実際の権限を別々に計算していますか?または、これは私のセキュリティの実装では単なるエラーですか? this articleから

+0

ノード上の現在のセッションのすべての権限を取得するには、Privilege [] AccessControlManager.getPrivileges(文字列absPath)を使用することもできます。 – Aroniaina

+0

JCR仕様のダウンロードを試行してください。http://download.oracle.com/otndocs/jcp /content_repository-2.0-pfd-oth-JSpec。あなたがJackRabbitで仕事をしているなら、それを必ず読んでください。アクセス制御管理はセクション16にあります – Aroniaina

答えて

1

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のは、グループ特権の代わりに、ユーザーの権限を取る、ということを意味します。あなたは記事全体を読むことができます、それはJackRabbit secutiryにとっては良いことです。

+0

リンクありがとうございます。とても役に立ちました。 優先順位 CRXのアクセス権は、次のように評価されます。 - ユーザープリンシパルは、アクセス制御リストの順序にかかわらず、常にグループプリンシパルよりも優先されます。 ノード階層内での位置 – vdjurovic