スケジューラー・タスクのユーザー許可
スケジューラー・サービスは、その実行時に Concurrency Utilities for Java EE の据え置き始動メカニズムを利用して、Java™ Platform, Enterprise Edition (Java EE) サービス・コンテキスト情報をタスクに伝搬します。WebSphere® Application Server に組み込まれている管理セキュリティー・メカニズムの JAAS セキュリティー・コンテキストを使用してアプリケーションを保護する場合は、正しいクレデンシャルを使用してスレッドで各タスクを作成します。
各タスクは以下の方法によって特定のセキュリティー・クレデンシャルを使用し
て実行されます。
- タスク作成時にスレッドで Java Authentication and Authorization Service (JAAS) セキュリティー・コンテキストを 使用する。並行性の資料で『据え置き開始およびセキュリティー』トピックを参照してください。
- TaskInfo オブジェクトの setAuthenticationAlias メソッドを使用する。
- BeanTaskInfo タスクの TaskHandler EJB メソッドの指定のセキュリティー ID を使用する。
スケジューラー・サービスは、その実行時に Concurrency Utilities for Java EE の据え置き始動メカニズムを利用して、Java EE サービス・コンテキスト情報をタスクに伝搬します。伝搬されるサービス・コンテキスト情報の量は、スケジューラーが参照する WorkManager 構成オブジェクトのサービス・コンテキストの設定値によって制御されます。 例えば、セキュリティーおよび国際化対応サービス・コンテキストを使用可能にできます。 これらのサービス・コンテキストを伝搬するためのアプリケーション・サーバーの構成方法について詳しくは、並行性に関する説明を参照してください。
Java Authentication and Authorization Service セキュリティー・ コンテキスト
製品に組み込まれている管理セキュリティー・メカニズムの JAAS セキュリティー・コンテキストを使用してアプリケーションを保護する場合は、 正しいクレデンシャルを使用してそのスレッドで各タスクを作成します。タスクに正しいクレデンシャルがあると、管理セキュリティーを使用不可にしてから再び使用可能にしても、セキュリティーの問題は生じません。スケジューラー・タスクの作成時にセキュリティー・コンテキストを設定せず、 後でターゲット・アプリケーションでセキュリティーを使用可能にすると、 セキュリティー例外または SECJ0053E などのエラー・メッセージが表示されることがあります。異なるサーバー上の 複数のスケジューラーが同じテーブルにアクセスし (クラスター化されたスケジューラーまたは冗長 スケジューラー)、セキュリティー設定が異なっている場合にも、このエラーが表示されることがあります。以下のいずれかの条件に該当する場合は、JAAS セキュリティー・コンテキストは設定されません。
- 管理セキュリティーが使用不可になっている。
- 関連付けられているスケジューラー構成用に構成されている WorkManager で、 セキュリティー・コンテキスト・ポリシーが使用不可になっている。
- クレデンシャルがスレッドに設定されていない。 例えば、 スケジュールされたタスクを作成するために使用されるエンタープライズ Bean またはサーブレットが保護されていないか、 またはタスクが WASScheduler MBean を使用して作成されました。
タスクの作成時に、上記の条件のいずれかに該当しており、
アプリケーション・サーバーまたはアプリケーションでセキュリティーを使用可能にする必要がある場合、
各タスクに対して以下のステップを実行する必要があります。
- Scheduler API の find メソッドまたは get メソッドを使用してタスクを検索する。
- Scheduler.cancel () API を使用して、タスクを取り消す。
- セキュリティーを使用可能にして、Scheduler.create() メソッドを使用してタスクを再作成する。 find メソッドまたは get メソッドを使用してスケジューラーから検索されたタスクを実行依頼すると、新規タスク ID が自動的に生成されます。
セキュリティー順序の優先順位
前述したように、タスクが正しいユーザー・クレデンシャルで実行されるか検証する方法は 3 つあります。 さらに、各 TaskInfo 実装にはユーザー情報を提供する独自の方法があり、それは標準のメカニズムをオーバーライドできます。 複数のメソッドが使用される場合は、以下のリストを参照してどのセキュリティー・メカニズムを採用するかを決定します。
BeanTaskInfo- Enterprise Java Bean ファイルの process() メソッド上に設定された TaskHandler セキュリティー ID
- TaskInfo インターフェース上の setAuthenticationAlias メソッドを使用して設定された認証別名
- JAAS セキュリティー・コンテキスト
- TaskInfo インターフェース上の setAuthenticationAlias メソッドを使用して設定された認証別名
- MessageTaskInfo インターフェース上の setUsername メソッドと setPassword メソッド 詳しくは、『推奨されないフィーチャー』の項目を参照してください。