モジュール java.base
パッケージ java.security

クラスAccessControlContext


  • public final class AccessControlContext
    extends Object
    AccessControlContextは、それがカプセル化するコンテキストに基づいて、システム・リソースへのアクセスを許可するかどうかを決定するために使用されます。

    さらに具体的に説明すると、AccessControlContextはコンテキストをカプセル化し、checkPermissionというメソッドを持っています。このメソッドは、AccessControllerクラスのcheckPermissionメソッドと同等ですが、1つ違いがあります。それは、AccessControlContextのcheckPermissionメソッドは、現在実行中のスレッドのコンテキストではなく、AccessControlContextがカプセル化するコンテキストに基づいて、アクセスを許可するかどうかを決定することです。

    したがって、AccessControlContextを使用するのは、指定したコンテキスト内で行うセキュリティ・チェックを、実際には別のコンテキスト内から(たとえば、ワーカー・スレッド内から)行う必要がある場合です。

    AccessControlContextは、AccessController.getContextメソッドを呼び出すと作成されます。 getContextメソッドは、現在の呼出しコンテキストをAccessControlContextオブジェクトに格納して返します。 呼出しの例を次に示します。

       AccessControlContext acc = AccessController.getContext()
     

    以降、別のコンテキスト内のコードは、以前に保存したAccessControlContextオブジェクトのcheckPermissionメソッドを呼び出すことができます。 呼出しの例を次に示します。

       acc.checkPermission(permission)
     

    導入されたバージョン:
    1.2
    関連項目:
    AccessController
    • コンストラクタの詳細

      • AccessControlContext

        public AccessControlContext​(ProtectionDomain[] context)
        指定されたProtectionDomainの配列でAccessControlContextを作成します。 コンテキストをnullにすることはできません。 重複した領域は、コンテキストから削除されます。
        パラメータ:
        context - このコンテキストに関連したProtectionDomain。 重複しない領域が配列からコピーされる。 その後配列が変更されても、このAccessControlContextがその影響を受けることはない。
        例外:
        NullPointerException - contextnullである場合
      • AccessControlContext

        public AccessControlContext​(AccessControlContext acc,
                                    DomainCombiner combiner)
        指定されたAccessControlContextおよびDomainCombinerを使って、新しいAccessControlContextを作成します。 このコンストラクタにより、DomainCombinerが、提供済みのAccessControlContextに関連付けられます。
        パラメータ:
        acc - 提供されたDomainCombinerに関連付けられたAccessControlContext
        combiner - 提供されたAccessControlContextに関連付けられているDomainCombiner
        例外:
        NullPointerException - 指定されたcontextnullである場合。
        SecurityException - セキュリティ・マネージャがインストールされ、呼出し元がcreateAccessControlContextを持たない場合SecurityPermission
        導入されたバージョン:
        1.3
    • メソッドの詳細

      • getDomainCombiner

        public DomainCombiner getDomainCombiner()
        このAccessControlContextに関連付けられたDomainCombinerを取得します。
        戻り値:
        このAccessControlContextに関連付けられているDomainCombiner。存在しない場合はnull
        例外:
        SecurityException - セキュリティ・マネージャがインストールされ、呼出し元がgetDomainCombinerを持たない場合SecurityPermission
        導入されたバージョン:
        1.3
      • checkPermission

        public void checkPermission​(Permission perm)
                             throws AccessControlException
        現在有効なセキュリティ・ポリシーとこのオブジェクトのコンテキストに基づいて、指定されたアクセス権によって示されるアクセス要求が許可されるか、拒否されるかを決定します。 アクセス権が、コンテキスト内の個々のProtectionDomainに含まれている場合にかぎり、要求は許可されます。 そうでない場合、要求は拒否されます。

        このメソッドは、アクセス要求が許可される場合には何もしないで復帰し、そうでない場合には適切なAccessControlExceptionをスローします。

        パラメータ:
        perm - 要求されたアクセス権。
        例外:
        AccessControlException - 現在のセキュリティ・ポリシーと、このオブジェクトがカプセル化したコンテキストに基づいて、指定されたアクセス権が許可されない場合。
        NullPointerException - 確認するためのアクセス権がnullの場合。
      • equals

        public boolean equals​(Object obj)
        2つのAccessControlContextオブジェクトが同等かどうかを判定します。 つまり、objがAccessControlContextであり、このコンテキストと同じProtectionDomainのセットを持っているかどうかを調べます。
        オーバーライド:
        equals 、クラス:  Object
        パラメータ:
        obj - このオブジェクトと等しいかどうかが判定されるオブジェクト。
        戻り値:
        objがAccessControlContextで、このコンテキストと同じProtectionDomainのセットを持っている場合はtrue、そうでない場合はfalse。
        関連項目:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode()
        このコンテキストのハッシュ・コード値を返します。 ハッシュ・コードを計算するには、コンテキストにあるすべての保護領域のハッシュ・コードの排他的論理和を求めます。
        オーバーライド:
        hashCode 、クラス:  Object
        戻り値:
        このコンテキストのハッシュ・コード値。
        関連項目:
        Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)