バージョン管理可能なアプリケーションは、アプリケーション・アーカイブ(EARファイル)のマニフェスト内で指定されているアプリケーション・アーカイブのバージョンを持つアプリケーションです。バージョン管理可能なアプリケーションはサイドバイサイドでデプロイでき、同時にアクティブにすることが可能です。バージョン管理可能なアプリケーションを使用すると、アプリケーションの複数のバージョンを利用できます。各バージョンには、個別のセキュリティ制約を設定できます。
バージョン管理可能なアプリケーションのプロバイダSSPIを使用すると、バージョンが作成および削除されたときに、アプリケーションのバージョン管理をサポートするすべてのセキュリティ・プロバイダに通知できます。また、バージョンが1つしかないアプリケーションが削除された場合にも、アプリケーションのバージョン管理をサポートするすべてのセキュリティ・プロバイダに通知できます。
この章の内容は次のとおりです。
バージョン管理可能なアプリケーションの再デプロイメントは、以降の再デプロイメントで同じアーカイブ・バージョンが指定されている場合を除き、必ずサイドバイサイド・バージョンを介して行われます。ただし、バージョン管理可能なアプリケーションは、複数のバージョンが競合することなく並列的に実行できるように作成する必要があります。つまり、バージョン管理可能なアプリケーションは、アプリケーション名などの固有性を想定しないようにする必要があります。たとえば、アプリケーションが、データベース表やLDAPストアなどのグローバル・データ構造の一意のキーとしてアプリケーション名を使用する場合、アプリケーションは、その代わりにアプリケーション識別子を使用するよう変更する必要があります。
本番再デプロイメントは、構成されたセキュリティ・プロバイダがアプリケーション・バージョニング・セキュリティSSPIをサポートしている場合にのみ許可されます。セキュリティ・レルムのすべての認可プロバイダ、ロール・マッピング・プロバイダ、および資格証明マッピング・プロバイダは、アプリケーションのデプロイにバージョンを使用するために、アプリケーションのバージョン管理をサポートする必要があります。
アプリケーションでアプリケーション・バージョンを割り当てる方法の詳細は、Oracle WebLogic Serverアプリケーションの開発の本番再デプロイメント用アプリケーションの開発を参照してください。
セキュリティ・プロバイダでアプリケーションのバージョニングをサポートするには、バージョン管理可能なアプリケーションのSSPIを実装する必要があります。WebLogicセキュリティ・フレームワークは、アプリケーションのバージョンが作成および削除されるときに、プロバイダがアプリケーションのバージョンに関連付けられたデータを作成、コピー、または削除するのに必要なアクションを実行できるように、バージョン管理可能なアプリケーションのプロバイダSSPIを呼び出します。実行するアクションは、プロバイダによって異なります。
また、バージョンが1つしかないアプリケーションが削除されたときにも、プロバイダがクリーンアップ・アクションを実行できるように、バージョン管理可能なアプリケーション・プロバイダSSPIが呼び出されます。
WebLogicセキュリティ・フレームワークは、新しいバージョンのアプリケーション識別子とアプリケーション・データのソースとして使用されるバージョンのアプリケーション識別子をバージョン管理可能なアプリケーション・プロバイダに渡します。ソース識別子が指定されなかった場合、アプリケーションの初期バージョンが作成中です。
WebLogic Serverの初期状態のセキュリティ・プロバイダ(認可、ロール・マッピング、および資格証明マッピング・プロバイダ)は、アプリケーション・バージョニングSSPIをサポートしています。新しいバージョンが作成されると、新しいアプリケーションのバージョンを表す新しいリソース識別子でカスタマイズされたすべてのロール、ポリシー、および資格証明マップのクローンが作成されます。さらに、アプリケーションのバージョンが削除されると、削除されたバージョンに関連付けられたリソースが削除されます。
認可、ロール・マッピング、または資格証明マッピング用にカスタム・セキュリティ・プロバイダを開発する際に、バージョン管理されたアプリケーションをサポートする必要がある場合は、バージョン管理可能なアプリケーションのSSPIを実装する必要があります。
バージョン管理可能なアプリケーションSSPIをサポートする必要がある場合、次の手順でバージョン管理可能なアプリケーションのカスタム・プロバイダを開発できます。
カスタム認可、ロール・マッピング、または資格証明マッピング・プロバイダの実装セキュリティ・レルムのすべての認可プロバイダ、ロール・マッピング・プロバイダ、または資格証明マッピング・プロバイダは、アプリケーションのデプロイにバージョンを使用するために、アプリケーションのバージョン管理をサポートする必要があります。
ランタイム・クラスを作成する前に、以下の作業が必要です。
この情報を理解し、設計に関する判断を下したら、次の手順でバージョン管理可能なアプリケーションのカスタム・プロバイダのランタイム・クラスを作成します。
カスタム認可、ロール・マッピング、または資格証明マッピング・プロバイダの実装
VersionableApplication
SSPIを実装するには、Provider SSPIの目的についてで説明されているメソッドおよび次のメソッドの実装を提供する必要があります。
createApplicationVersion
void createApplicationVersion(String appIdentifier, String sourceAppIdentifier)
新しいアプリケーションのバージョンの作成をマークします。バージョンが作成された時点で、WebLogic Serverドメイン内の1つのサーバーで(WebLogic Serverドメイン内の管理サーバーでのみ)呼び出されます。WebLogicセキュリティ・フレームワークは、新しいバージョンのアプリケーション識別子(appIdentifier
)とアプリケーション・データのソースとして使用されるバージョンのアプリケーション識別子(sourceAppIdentifier
)をcreateApplicationVersion
メソッドに渡します。ソース識別子が指定されなかった場合、アプリケーションの初期バージョンが作成中です。
deleteApplication
void deleteApplication(String appName)
バージョンが1つしかないアプリケーションの削除をマークします。アプリケーションが削除された時点で、WebLogic Serverドメイン内の管理サーバーでのみ呼び出されます。
deleteApplicationVersion
void deleteApplicationVersion(String appIdentifier)
アプリケーションのバージョンの削除をマークします。バージョンが削除された時点で、WebLogic Serverドメイン内の管理サーバーでのみ呼び出されます。
例14-1では、バージョン管理可能なアプリケーションのSSPIがサンプル認可プロバイダでどのように実装されるかを示します。
例14-1 SimpleSampleAuthorizationProviderImpl
public final class SimpleSampleAuthorizationProviderImpl implements DeployableAuthorizationProviderV2, AccessDecision, VersionableApplicationProvider : : public void createApplicationVersion(String appId, String sourceAppId) { System.out.println("SimpleSampleAuthorizationProviderImpl.createApplicationVersion"); System.out.println("\tapplication identifier\t= " + appId); System.out.println("\tsource app identifier\t= " + ((sourceAppId != null) ? sourceAppId : "None")); // create new policies when existing application is specified if (sourceAppId != null) { database.clonePoliciesForApplication(sourceAppId,appId); } public void deleteApplicationVersion(String appId) { System.out.println("SimpleSampleAuthorizationProviderImpl.deleteApplicationVersion"); System.out.println("\tapplication identifier\t= " + appId); // clear out policies for the application database.removePoliciesForApplication(appId); } public void deleteApplication(String appName) { System.out.println("SimpleSampleAuthorizationProviderImpl.deleteApplication"); System.out.println("\tapplication name\t= " + appName); // clear out policies for the application database.removePoliciesForApplication(appName); }
カスタム認可、ロール・マッピング、および資格証明マッピング・プロバイダのMBeanタイプを生成する際には、バージョン管理可能なアプリケーションのプロバイダのMBeanも実装する必要があります。ApplicationVersionerMBeanはマーカー・インタフェースなので、メソッドはありません。
例14-2では、SimpleSampleAuthorizer MBean定義ファイル(MDF)がApplicationVersionerMBean MBeanをどのように実装するかを示します。
例14-2 ApplicationVersionerMBeanを実装する
<MBeanType Name = "SimpleSampleAuthorizer" DisplayName = "SimpleSampleAuthorizer" Package = "examples.security.providers.authorization.simple" Extends = "weblogic.management.security.authorization.DeployableAuthorizer" Implements = "weblogic.management.security.ApplicationVersioner" PersistPolicy = "OnUpdate" >
WebLogic MBeanMakerを使用してMDFを実行して中間ファイルを生成し、MBean実装ファイルを編集して適切なメソッドの実装を提供したら、バージョン管理可能なアプリケーションのプロバイダを含むカスタム認可プロバイダ、ロール・マッピング・プロバイダ、資格証明マッピング・プロバイダのMBeanファイルとランタイム・クラスをMBean JARファイル(MJF)にパッケージ化する必要があります。
この手順は、「WebLogic MBeanMakerによるMBean JARファイル(MJF)の作成」で説明します。
バージョン管理可能なアプリケーションのカスタム・プロバイダを構成するということは、アプリケーション・バージョン・サービスを必要とするアプリケーションがアクセス可能なセキュリティ・レルムにバージョン管理可能なアプリケーションのカスタム・プロバイダを追加するということです。
カスタム・セキュリティ・プロバイダの構成は管理タスクですが、カスタム・セキュリティ・プロバイダの開発者が行うこともできます。
WebLogic Server管理コンソールを使用してカスタムのバージョン管理可能なアプリケーション・プロバイダを構成する手順は、Oracle WebLogic Serverセキュリティの管理のWebLogicセキュリティ・プロバイダの構成を参照してください。