インターフェース Acl
- すべてのスーパーインターフェース:
SerializableSE
- すべての既知のサブインターフェース:
AuditableAcl
、MutableAcl
、OwnershipAcl
- すべての既知の実装クラス:
AclImpl
Acl は、特定のドメインオブジェクトのすべての ACL エントリを表します。ドメインオブジェクト自体への参照を必要としないようにするために、このインターフェースは、ObjectIdentity
インターフェースを介してドメインオブジェクトと ACL オブジェクト ID 間の間接参照を処理します。
実装クラスは、一部またはすべての Sid
インスタンスの Permission
情報を表すインスタンスを返すことを選択できます。インスタンスには、特定のドメインオブジェクトのすべての Sid が含まれているとは限りません。
方法の概要
修飾子と型メソッド説明現在の Acl で表されるすべてのエントリを返します。この Acl がエントリを提供するドメインオブジェクトを取得します。getOwner()
Acl の所有者を決定します。ドメインオブジェクトは、ACL 継承のために親を持つ場合があります。boolean
getParentAcl()
からの ACL エントリを現在の Acl に流す必要があるかどうかを示します。boolean
isGranted
(ListSE<Permission> permission, ListSE<Sid> sids, boolean administrativeMode) これは実際の認可ロジック方式であり、ACL 認可決定が必要な場合は常に使用する必要があります。boolean
isSidLoaded
(ListSE<Sid> sids) 効率上の理由から、Acl が読み込まれ、システム内のすべての Sid のエントリが含まれていない場合があります。
メソッドの詳細
getEntries
ListSE<AccessControlEntry> getEntries()現在の Acl で表されるすべてのエントリを返します。 Acl の親に関連付けられているエントリは返されません。この方法は通常、管理目的で使用されます。
エントリが配列に現れる順序は、
MutableAcl
インターフェースで宣言されたメソッドにとって重要です。さらに、一部の実装では、高度な権限チェックの一部として順序を使用する場合があります。認可の決定を行うためにこのメソッドを使用しないでください。代わりに
isGranted(List, List, boolean)
を使用してください。Acl が Sid のサブセットのみを表す場合でも、このメソッドは正しく動作する必要があります。 Sid のサブセットのみが表現されている場合、呼び出し元は結果を正しく処理する必要があります。
- 戻り値:
- Acl で表されるエントリのリスト。現在この Acl に関連付けられているエントリがない場合は null 。
getObjectIdentity
ObjectIdentity getObjectIdentity()この Acl がエントリを提供するドメインオブジェクトを取得します。 Acl が作成されると、これは不変です。- 戻り値:
- オブジェクトのアイデンティティ (決して null )
getOwner
Sid getOwner()Acl の所有者を決定します。所有権の意味は実装によって異なり、不定です。- 戻り値:
- 所有者 (実装が所有権の概念を使用しない場合、 null になる可能性があります)
getParentAcl
Acl getParentAcl()ドメインオブジェクトは、ACL 継承のために親を持つ場合があります。親が存在する場合、その ACL はこのメソッドを介してアクセスできます。次に、親の親(祖父母)にアクセスできます。このメソッドは、親 Acl とこの Acl の間のナビゲーション階層の存在のみを表します。実際の継承を行うには、
isEntriesInheriting()
も true である必要があります。Acl が Sid のサブセットのみを表す場合でも、このメソッドは正しく動作する必要があります。 Sid のサブセットのみが表現されている場合、呼び出し元は結果を正しく処理する必要があります。
- 戻り値:
- 親の Acl (この Acl に親がない場合、 null になる可能性があります)
isEntriesInheriting
boolean isEntriesInheriting()getParentAcl()
からの ACL エントリを現在の Acl に流す必要があるかどうかを示します。Acl と親 Acl の間の単なるリンクだけでは、ACL エントリが継承されません。これは、ドメインオブジェクトは完全に独立したエントリを持ちたいが、ナビゲーションのために親とのリンクを維持する必要があるためです。このメソッドは、ナビゲーション関連がエントリの実際の継承にも及ぶかどうかを示します。
- 戻り値:
- true 親 ACL エントリが現在の Acl を継承する場合
isGranted
boolean isGranted(ListSE<Permission> permission, ListSE<Sid> sids, boolean administrativeMode) throws NotFoundException, UnloadedSidException これは実際の認可ロジック方式であり、ACL 認可決定が必要な場合は常に使用する必要があります。現在のプリンシパルのセキュリティ ID を表す Sid の配列が表示されます。さらに、肯定的な認可決定に必要な権限を示すために、1 つ以上のビットが設定された一連の Permission が提示されます。配列内に任意の Permission を保持することで、肯定的な認可が得られるため、配列が提示されます。
認可の決定を行うために使用される実際のアプローチは実装に任され、このインターフェースでは指定されません。例: 実装は、ACL エントリが格納されている順序で現在の ACL を検索してもよい(MAY)。渡された Permission に示されているものと同じアクティブビットを持つ単一のエントリが見つかった場合、そのエントリの認可または拒否の状態によって認可の決定が決定される場合があります。拒否状態の場合、拒否の決定は、配列で渡された他のすべての Permission も検索に失敗した場合にのみ関連します。現在の ACL のビットに一致するエントリが見つからない場合、
isEntriesInheriting()
が true であれば、認可の決定が親 ACL に渡されることがあります。一致するエントリがない場合、実装は例外をスローするか、事前定義された認可決定を行うことができます。このメソッドは、 Acl が Sid のサブセットのみを表す場合でも正しく動作する必要がありますが、メソッドが呼び出された場合、実装はシグネチャー定義の例外の 1 つをスローすることが認可されます。この Acl にロードされたことのない
Sid
の認可決定をリクエストします。- パラメーター:
permission
- 必要な権限 (少なくとも 1 つのエントリが必要)sids
- プリンシパルが保持するセキュリティ ID (少なくとも 1 つのエントリが必要)administrativeMode
- true がクエリが管理目的であり、ロギングまたは監査(実装でサポートされている場合)を行わないことを示す場合- 戻り値:
- 認可が付与されている場合、 true
- 例外:
NotFoundException
- 通常、この特定の権限や SID の ACL 情報がないために、実装が正式な認可を決定できない場合にスローする必要があります。UnloadedSidException
- Acl に、引数として渡された 1 つ以上の Sid の詳細がない場合にスローされます
isSidLoaded
効率上の理由から、Acl が読み込まれ、システム内のすべての Sid のエントリが含まれていない場合があります。ACL がロードされていると、すべてシドを表していない場合は、ACL をすべての方法は、それが実際に表しシドインスタンスの限られた範囲内で使用することができます。読み取り専用の認可決定が行われている場合、特定の Sid に対してのみ Acl をロードするのは正常です。ただし、 Acl のユーザーインターフェースレポートまたは変更が必要な場合は、 Acl にすべての Sid をロードする必要があります。このメソッドは、指定された Sid がロードされているかどうかを示します。
- パラメーター:
sids
- 発信者がこの Sid がサポートしているかどうかを知ることに関心がある 1 つ以上のセキュリティ ID- 戻り値:
- 渡されたすべての Sid がこの Acl インスタンスによって表される場合、 true