クラス DefaultPermissionGrantingStrategy
- java.lang.Object
-
- org.springframework.security.acls.domain.DefaultPermissionGrantingStrategy
- 実装されたすべてのインターフェース:
PermissionGrantingStrategy
public class DefaultPermissionGrantingStrategy extends java.lang.Object implements PermissionGrantingStrategy
コンストラクターの概要
コンストラクター コンストラクター 説明 DefaultPermissionGrantingStrategy(AuditLogger auditLogger)
リクエストされたアクセス許可の付与と拒否を記録するために使用されるロガーを使用してインスタンスを作成します。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 protected boolean
isGranted(AccessControlEntry ace, Permission p)
ACE パーミッションを指定されたパーミッションと比較します。boolean
isGranted(Acl acl, java.util.List<Permission> permission, java.util.List<Sid> sids, boolean administrativeMode)
認可を決定します。
コンストラクターの詳細
DefaultPermissionGrantingStrategy
public DefaultPermissionGrantingStrategy(AuditLogger auditLogger)
リクエストされたアクセス許可の付与と拒否を記録するために使用されるロガーを使用してインスタンスを作成します。
メソッドの詳細
isGranted
public boolean isGranted(Acl acl, java.util.List<Permission> permission, java.util.List<Sid> sids, boolean administrativeMode) throws NotFoundException
認可を決定します。permission
引数とsid
引数の順序は非常に重要です。このメソッドは、指定された順序で各permission
を反復処理します。反復ごとに、すべてのsid
が、提示された順序で検討されます。次に、そのpermission:sid
の組み合わせに直接一致する最初のAccessControlEntry
オブジェクトの検索が実行されます。最初の完全一致が見つかると(つまり、現在検索されている SID と検索されている正確なアクセス認可ビットマスクを持つ ACE)、その ACE の認可または拒否フラグが優先されます。ACE がアクセスを認可するように指定している場合、メソッドはtrue
を返します。ACE がアクセスを拒否するように指定した場合、ループは停止し、次のpermission
反復が実行されます。各パーミッションがアクセスを拒否することを示している場合、最初に見つかった拒否 ACE が失敗の理由と見なされます(最初に見つかった一致であるため、常にではありませんが、最も論理的に変更が必要なものです)。パーミッションに対して一致する ACE がまったく見つからなかった場合、親 ACL が試行されます(親が存在し、Acl.isEntriesInheriting()
がtrue
である場合)。親 ACL は、その親もスキャンします。最終的に一致する ACE が見つからない場合、NotFoundException
がスローされ、呼び出し元はパーミッションチェックの処理方法を決定する必要があります。同様に、メソッドに提示された SID 引数のいずれかが ACL によってロードされなかった場合、UnloadedSidException
がスローされます。- 次で指定:
- インターフェース
PermissionGrantingStrategy
のisGranted
- パラメーター:
permission
- スキャンする正確な権限 (順序は重要です)sids
- スキャンする正確な SID (順序は重要です)administrativeMode
-true
がクエリが管理目的であり、監査が行われないことを示している場合- 戻り値:
- 権限の 1 つが付与されている場合は
true
、権限の 1 つが明確に取り消されている場合はfalse
- 例外:
NotFoundException
- 許可ビットマスクの 1 つと SID の組み合わせの正確な ACE が見つからなかった場合
isGranted
protected boolean isGranted(AccessControlEntry ace, Permission p)
ACE パーミッションを指定されたパーミッションと比較します。デフォルトでは、パーミッションマスクを比較して完全に一致します。この戦略のサブクラスは、この動作をオーバーライドして、より高度な比較を実装できます。アクセスを許可する ACE のビット単位の比較。if (ace.isGranting() && p.getMask() != 0) { return (ace.getPermission().getMask() & p.getMask()) != 0; } else { return ace.getPermission().getMask() == p.getMask(); }
- パラメーター:
ace
- マスクを保持している Acl からの ACE。p
- チェックしている許可。- 戻り値:
- それぞれのマスクが等しいと見なされる場合は true。