クラス PolicyContext
- java.lang.ObjectSE
-
- 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> T
getContext(StringSE key)
このメソッドは、Policy
プロバイダーが、コンテキストオブジェクトキーに登録されているPolicyContextHandler
をアクティブ化し、コンテナーから対応するポリシーコンテキストオブジェクトを返すようにするために使用できます。static StringSE
getContextID()
この静的メソッドは、アクセサーが呼び出されたスレッドに関連付けられたポリシーコンテキスト識別子の値を返します。static SetSE
getHandlerKeys()
このメソッドは、コンテナーによって登録されたコンテナー固有のコンテキストハンドラーを識別するキーを取得するために使用できます。static void
registerHandler(StringSE key, PolicyContextHandler handler, boolean replace)
コンテナー固有のPolicyContext
ハンドラーを登録するために使用される認可保護メソッド。static void
setContextID(StringSE contextID)
このメソッドが呼び出されるスレッドに関連付けられたポリシーコンテキスト識別子の値を変更するために使用される、認可で protected メソッド。static void
setHandlerData(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 に対するこのメソッドによる操作により、このメソッドのシグニチャで考慮されていないチェック済み例外がスローされる場合。