パッケージ jakarta.security.jacc

クラス PolicyContext


  • public final class PolicyContext
    extends ObjectSE
    このユーティリティクラスは、ポリシーコンテキスト識別子およびその他のポリシー関連コンテキストを Policy プロバイダーに伝達するためにコンテナーによって使用されます。Policy プロバイダーは、ポリシーコンテキスト識別子を使用して、アクセス決定に適用するポリシーのサブセットを選択します。

    ポリシーコンテキスト識別子の値は  String であり、各スレッドには個別に確立されたポリシーコンテキスト識別子があります。コンテナーは、静的 setContextID メソッドを呼び出すことにより、ポリシーコンテキスト識別子のスレッドスコープ値を確立します。スレッドスコープのポリシーコンテキスト識別子の値は、静的 getContextID メソッドを呼び出すことで(Policy に)使用できます。

    このクラスは、Policy プロバイダーが、呼び出し元のコンテナーから追加のスレッドスコープのポリシー関連コンテキストオブジェクトをリクエストするためにも使用されます。コンテナーは、静的 registerHandler メソッドを使用してコンテナー固有の PolicyContext ハンドラーを登録します。ハンドラー登録はクラスにスコープされ、同じハンドラー登録がすべてのスレッドコンテキストでアクティブになります。コンテナーは、静的メソッド setHandlerData を使用して、Policy プロバイダーによってアクティブ化されたときにハンドラーに渡されるスレッドスコープのパラメーターを確立できます。静的 getContext メソッドは、ハンドラーをアクティブ化し、対応するコンテキストオブジェクトを取得するために使用されます。

    このクラスによって提供される静的アクセサー関数を使用すると、特定の PolicyContext インスタンスへの共通の参照とは関係なく、スレッドごとのポリシーコンテキスト値を確立して伝達できます。

    PolicyContext クラスは、静的 ThreadLocal インスタンス変数をカプセル化して、ポリシーコンテキスト識別子とハンドラーデータ値を表す場合があります。

    アプリケーションサーバーは PolicyContext クラスをバンドルまたはインストールする必要があり、アプリケーションサーバーのコンテナーは、これらのメソッドを呼び出す権限のない呼び出しコンテキストから PolicyContext クラスのメソッドが呼び出されないようにする必要があります。getContextID メソッドと GetHandlerKeys メソッドを除き、コンテナーは、コンテナーアクセス決定を実行するためにコンテナーによって信頼されている呼び出しコンテキストに PolicyContext クラスのメソッドへのアクセスを制限し、認可する必要があります。PolicyContext クラスは、"setPolicy" SecurityPermission が付与されていない AccessControlContext からの呼び出しを拒否し、コンテナーアクセス決定を実行するために使用されるポリシープロバイダーに "setPolicy" 権限が付与されるようにすることで、(コンテナーに代わって) この要件を満たすことができます。

    作成者:
    Ron Monzillo, Gary Ellison
    関連事項:
    PolicyContextHandler
    • メソッドのサマリー

      すべてのメソッド   静的メソッド   具象メソッド  
      修飾子と型 メソッド 説明
      static <T> TgetContext​(StringSE key)
      このメソッドは、Policy プロバイダーが、コンテキストオブジェクトキーに登録されている PolicyContextHandler をアクティブ化し、コンテナーから対応するポリシーコンテキストオブジェクトを返すようにするために使用できます。
      static StringSEgetContextID()
      この静的メソッドは、アクセサーが呼び出されたスレッドに関連付けられたポリシーコンテキスト識別子の値を返します。
      static SetSEgetHandlerKeys()
      このメソッドは、コンテナーによって登録されたコンテナー固有のコンテキストハンドラーを識別するキーを取得するために使用できます。
      static voidregisterHandler​(StringSE key, PolicyContextHandler handler, boolean replace)
      コンテナー固有の PolicyContext ハンドラーを登録するために使用される認可保護メソッド。
      static voidsetContextID​(StringSE contextID)
      このメソッドが呼び出されるスレッドに関連付けられたポリシーコンテキスト識別子の値を変更するために使用される、認可で protected メソッド。
      static voidsetHandlerData​(ObjectSE data)
      スレッドスコープのハンドラーデータオブジェクトを PolicyContext に関連付けるために使用できる認可保護メソッド。
    • メソッドの詳細

      • setContextID

        public static void setContextID​(StringSE contextID)
        このメソッドが呼び出されるスレッドに関連付けられたポリシーコンテキスト識別子の値を変更するために使用される、認可で protected メソッド。
        パラメーター:
        contextID - 呼び出しスレッドの PolicyContext に割り当てられるポリシーコンテキスト識別子の値を表す String。値 null  は、このパラメーターの正当な値です。
        例外:
        SecurityExceptionSE - 呼び出し元の AccessControlContext が、コンテナーによってこのメソッドの呼び出しを認可されていない場合。
      • getContextID

        public static StringSE getContextID()
        この静的メソッドは、アクセサーが呼び出されたスレッドに関連付けられたポリシーコンテキスト識別子の値を返します。
        戻り値:
        スレッドに対して確立された String (または null)ポリシーコンテキスト識別子。スレッドのポリシーコンテキスト識別子が setContext を介して別の値に設定されていない場合、このメソッドはデフォルトのポリシーコンテキスト識別子 null を返す必要があります。
        例外:
        SecurityExceptionSE - 呼び出し元の AccessControlContext が、コンテナーによってこのメソッドの呼び出しを認可されていない場合。コンテナーは、任意の AccessControlContext によるこのメソッドの呼び出しを承認することを選択できます。
      • setHandlerData

        public static void setHandlerData​(ObjectSE data)
        スレッドスコープのハンドラーデータオブジェクトを PolicyContext に関連付けるために使用できる認可保護メソッド。ハンドラーデータオブジェクトはハンドラーで使用できるようになり、コンテナー内の呼び出しスコープの状態にハンドラーを提供またはバインドできます。
        パラメーター:
        data - 呼び出し元のスレッドに関連付けられ、(スレッド上の) Policy プロバイダーによってアクティブ化されたハンドラーに渡されるコンテナー固有のオブジェクト。値 null は、このパラメーターの正当な値であり、setHandlerData がスレッドで呼び出されていない場合にハンドラーのアクティブ化で使用される値です。
        例外:
        SecurityExceptionSE - 呼び出し元の AccessControlContext が、コンテナーによってこのメソッドの呼び出しを認可されていない場合。
      • registerHandler

        public static void registerHandler​(StringSE key,
                                           PolicyContextHandler handler,
                                           boolean replace)
                                    throws PolicyContextException
        コンテナー固有の PolicyContext ハンドラーを登録するために使用される認可保護メソッド。ハンドラーは、複数のキーを処理するために登録できますが、いつでも、最大で 1 つのハンドラーをキーに登録できます。
        パラメーター:
        key - ハンドラーによって処理されるコンテキストオブジェクトを識別する(大文字と小文字を区別する) String。このパラメーターの値は null であってはなりません。
        handler - PolicyContextHandler インターフェースを実装するオブジェクト。このパラメーターの値は null であってはなりません。
        replace - このブール値は、呼び出されたときに、同じキーを処理するために PolicyContextHandler がすでに登録されている場合に、このメソッドの動作を定義します。その場合、この引数の値が true の場合、既存のハンドラーは引数ハンドラーに置き換えられます。このパラメーターの値が false の場合、既存の登録が保持され、例外がスローされます。
        例外:
        IllegalArgumentExceptionSE - ハンドラー引数またはキー引数のいずれかの値が null の場合、または置換引数の値が false であり、引数ハンドラーと同じキーを持つハンドラーがすでに登録されている場合。
        SecurityExceptionSE - 呼び出し元の AccessControlContext が、コンテナーによってこのメソッドの呼び出しを認可されていない場合。
        PolicyContextException - 引数 PolicyContextHandler に対するこのメソッドによる操作により、このメソッドのシグニチャーで考慮されていないチェック済み例外がスローされる場合。
      • getHandlerKeys

        public static SetSE getHandlerKeys()
        このメソッドは、コンテナーによって登録されたコンテナー固有のコンテキストハンドラーを識別するキーを取得するために使用できます。
        戻り値:
        その要素である Set は、登録されているため PolicyContext でアクティブ化される可能性のあるハンドラーを識別する String キー値です。
        例外:
        SecurityExceptionSE - 呼び出し元の AccessControlContext が、コンテナーによってこのメソッドの呼び出しを認可されていない場合。コンテナーは、任意の AccessControlContext によるこのメソッドの呼び出しを承認することを選択できます。
      • getContext

        public static <T> T getContext​(StringSE key)
                                throws PolicyContextException
        このメソッドは、Policy プロバイダーが、コンテキストオブジェクトキーに登録されている PolicyContextHandler をアクティブ化し、コンテナーから対応するポリシーコンテキストオブジェクトを返すようにするために使用できます。このメソッドがハンドラーをアクティブ化すると、呼び出し元のスレッドに関連付けられたコンテキストオブジェクトキーとハンドラーデータがハンドラーに渡されます。
        パラメーター:
        key - アクティブ化する PolicyContextHandler とハンドラーから取得するコンテキストオブジェクトを識別する String。このパラメーターの値は null であってはなりません。
        戻り値:
        目的のコンテキストを含むコンテナーおよびハンドラー固有のオブジェクト。対応するハンドラーが登録されていて、対応するコンテキストの値が null の場合、null 値が返されます。
        例外:
        IllegalArgumentExceptionSE - PolicyContextHandler がキーに登録されていない場合、または登録されたハンドラーがキーをサポートしなくなった場合。
        SecurityExceptionSE - 呼び出し元の AccessControlContext が、コンテナーによってこのメソッドの呼び出しを認可されていない場合。
        PolicyContextException - 識別された PolicyContextHandler に対するこのメソッドによる操作により、このメソッドのシグニチャで考慮されていないチェック済み例外がスローされる場合。