クラス DefaultPermissionGrantingStrategy

java.lang.ObjectSE
org.springframework.security.acls.domain.DefaultPermissionGrantingStrategy
実装されたすべてのインターフェース:
PermissionGrantingStrategy

public class DefaultPermissionGrantingStrategy extends ObjectSE implements PermissionGrantingStrategy
  • コンストラクターの詳細

    • DefaultPermissionGrantingStrategy

      public DefaultPermissionGrantingStrategy(AuditLogger auditLogger)
      リクエストされたアクセス許可の付与と拒否を記録するために使用されるロガーを使用してインスタンスを作成します。
  • メソッドの詳細

    • isGranted

      public boolean isGranted(Acl acl, ListSE<Permission> permission, ListSE<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 がスローされます。
      次で指定:
      インターフェース PermissionGrantingStrategyisGranted 
      パラメーター:
      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。