WebSphere Application Server は、Java Authorization Contract for Containers (JACC) 仕様をサポートし、 サード・パーティーのセキュリティー・プロバイダーが Java 2 Platform, Enterprise Edition (J2EE) 許可を処理できるようにします。
JACC 仕様では、アプリケーション・サーバーおよびプロバイダーの両方のコンテナーが、 いくつかの要件を満たしていることが必要となります。 すなわち、コンテナーは、アプリケーションのデプロイメント時にセキュリティー・ポリシー情報をプロバイダーに伝搬すること、およびすべての許可の決定に対してプロバイダーを呼び出すことができる必要があります。 プロバイダーは、アプリケーションのデプロイメント時に、 ポリシー情報をリポジトリーに保管する必要があります。 プロバイダーはこの情報を使用して、コンテナーから呼び出されたときに、許可を決定します。
セキュリティーが使用可能な場合に、 エンタープライズ Bean または Web リソースがアクセスされると、 Enterprise JavaBeans (EJB) コンテナーまたは Web コンテナーはセキュリティー・ランタイムを呼び出し、 アクセスを許可するかどうか許可の決定を行います。 外部プロバイダーを使用する場合、アクセスの決定はそのプロバイダーが代行します。
Java Authorization Contract for Containers (JACC) 仕様に準じて、適切な許可オブジェクトが作成され、 適切なポリシー・コンテキスト・ハンドラーが登録され、さらに適切なポリシー・コンテキスト ID (contextID) が設定されます。 呼び出しは、アクセス決定を行うためにプロバイダーにより実装された java.security.Policy オブジェクト・メソッドに対して行われます。
以下のセクションでは、エンタープライズ Bean および Web リソースの両方に対して、 どのようにプロバイダーが呼び出されるかを説明します。
エンタープライズ Bean についてのアクセス決定
Web リソースについてのアクセス決定
サブジェクトからの情報をアクセス決定に使用
アクセス決定に対しプロバイダーが WebSphere Application Server が生成したサブジェクトを信頼する場合、 プロバイダーは、サブジェクト内の公開クレデンシャルを照会し、WSCredential クレデンシャルを取得できます。 WSCredential API を使用すると、名前やユーザーが所属するグループなど、ユーザーについての情報を取得できます。 その情報は、アクセスの決定を行うために使用されます。
プロバイダーがサブジェクトに必要な情報を追加する場合、WebSphere Application Server は、 その情報を使用してアクセスを決定することができます。 プロバイダーは、 Trust Association Interface 機能を使用するか、またはアプリケーション・サーバーにログイン・モジュールを接続することによって、 情報を追加することができます。
『セキュリティー属性の伝搬』セクションには、 サブジェクトに WebSphere Application Server の必要な情報を追加する方法についての追加資料が含まれています。 詳しくは、アプリケーション・サーバー間のセキュリティー属性の伝搬 を参照してください。
WebSphere Application Server では、特定の条件の下で、Web モジュールの動的更新がサポートされています。 Web モジュールの更新、削除、またはアプリケーションに対する追加が行われた場合、 そのモジュールのみが、適宜に停止および開始されます。 アプリケーション内に存在するその他のモジュールは影響を受けず、アプリケーション自身の停止および再始動は行われません。
デフォルトの許可エンジンを使用する場合は、Web モジュール内の任意のセキュリティー・ポリシーが変更され、 アプリケーションは停止した後再始動されます。 Java Authorization Contract for Containers (JACC) ベースの許可が使用されている場合は、 その振る舞いはプロバイダーがサポートする機能に依存します。 プロバイダーが Web モジュールへの動的変更を処理できる場合、その Web モジュールのみが影響を受けます。 それ以外の場合は、Web モジュールへの新しい変更を有効にするため、アプリケーション全体が停止および再始動されます。
JACC 構成モデルの「動的モジュール更新のサポート」オプションを構成することにより、 プロバイダーが動的更新をサポートするかどうかを示すことができます (詳しくは、Tivoli Access Manager を使用した J2EE リソースへのアクセスの許可 を参照してください)。 このオプションは、管理コンソールを使用して、またはスクリプトにより、使用可能または使用不可に設定できます。 ほとんどのプロバイダーがポリシー情報をその外部リポジトリーに保管し、 それにより動的更新をサポートすることが可能になると予想されます。 ほとんどのプロバイダーでは、このオプションはデフォルトで使用可能になります。
「動的モジュール更新のサポート」オプションが使用可能なときに、 セキュリティー役割を含む Web モジュールが動的に追加、変更、または削除された場合は、 指定の Web モジュールのみが影響を受け、再始動されます。 このオプションが使用不可の場合は、アプリケーション全体が再始動されます。 動的更新が実行された場合、影響を受けたモジュールのセキュリティー・ポリシー情報が、プロバイダーに伝搬されます。 セキュリティー・ポリシーの伝搬について詳しくは、JACC ポリシーの伝搬 を参照してください。
サーバー始動時に Java Authorization Contract for Containers (JACC) プロバイダーの初期化が必要な場合 (例えば、 クライアント・コードがサーバー・コードと通信できるようにするため)、 このプロバイダーは、com.ibm.wsspi.security.authorization.InitializeJACCProvider インターフェースを実装できます。 詳しくは、JACC をサポートするインターフェース を参照してください。
このインターフェースがインプリメントされると、サーバー始動時に呼び出されます。 JACC 構成モデル内のすべてのカスタム・プロパティーが、そのインプリメンテーションの初期化メソッドに伝搬されます。 カスタム・プロパティーは、管理コンソールまたはスクリプトを使用することにより入力できます。
サーバーのシャットダウン時には、プロバイダーの必要とするクリーンアップ処理のために、クリーンアップ・メソッドが呼び出されます。 このインターフェースのインプリメンテーションは、厳密にオプショナルであり、 プロバイダーがサーバー始動時に初期化を必要とする場合にのみ使用します。
Java Authorization Contract for Containers (JACC) による許可は、 WebSphere Application Server バージョン 6.0.x の新機能です。 また、JACC 構成は、セルのレベルでセットアップされ、 そのセル内のすべてのノードおよびサーバーに適用できます。
JACC ベースの許可を使用する場合、 バージョン 6.0.x および それ以降のノードのみをセルに含める必要があります。 この制約が意味するところは、 バージョン 6.0.x またはそれ以降のセルに、 バージョン 5.x ノードのセットが含まれるような 混合ノード環境は、サポートされていないということです。