BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

WebLogic Security サービスの開発

 Previous Next Contents Index PDF で侮ヲ  

裁決プロバイダ

裁決では、複数の認可プロバイダがコンフィグレーションされている場合に発生するおそれのある認可上の衝突を、それぞれの認可プロバイダのアクセス決定の結果を比較検討することによって解消します。WebLogic Server では、裁決プロバイダを使用して、複数のアクセス決定から返される結果を調停し、PERMITDENY の最終判定を下します。また、裁決プロバイダでは、単一の認可プロバイダのアクセス決定から ABSTAIN の回答が返されたときにどうすべきかを指定することもできます。

以下の節では、裁決プロバイダの概念と機能、およびカスタム裁決プロバイダの開発手順について説明します。

 


裁決プロセス

裁決プロバイダは認可プロセスの一部として使用されるので、使用方法は認可プロセスで説明されています。

 


カスタム裁決プロバイダを開発する必要があるか

WebLogic Server のデフォルト (つまりアクティブな) セキュリティ レルムには WebLogic 裁決プロバイダが含まれています。WebLogic 裁決プロバイダは、複数の認可プロバイダのアクセス決定から異なる結果が返された場合に裁決を行い、WebLogic リソースへのアクセスを許可するかどうかを最終的に判定します。

WebLogic 裁決プロバイダには、動作を制御する [完全一致の許可が必要] という属性があります。[完全一致の許可が必要] 属性は、デフォルトでは TRUE に設定されており、WebLogic 裁決プロバイダはその設定に従って次のように動作します。

[完全一致の許可が必要] 属性を FALSE に変更した場合、WebLogic 裁決プロバイダは次のように動作します。

注意: [完全一致の許可が必要] 属性は、WebLogic 裁決プロバイダをコンフィグレーションするときに設定します。 WebLogic 裁決プロバイダのコンフィグレーションの詳細については、『WebLogic Security の管理』の「WebLogic 裁決プロバイダのコンフィグレーション」を参照してください。

上記の説明と異なる動作の裁決プロバイダが必要な場合、カスタム裁決プロバイダを開発する必要があります (裁決プロバイダでは、1 つの認可プロバイダのアクセス決定が ABSTAIN を返した場合に、指定したセキュリティ要件に基づいてどうすべきかも指定できることに注意してください)。

 


カスタム裁決プロバイダの開発方法

WebLogic 裁決プロバイダが開発者の要求を満たさない場合、次の手順でカスタム裁決プロバイダを開発することができます。

  1. 適切な SSPI を使用して実行時クラスを作成する

  2. WebLogic MBeanMaker を使用して MBean タイプを生成する

  3. Administration Console を使用してカスタム裁決プロバイダをコンフィグレーションする

適切な SSPI を使用して実行時クラスを作成する

実行時クラスを作成する前に、以下の作業が必要です。

この情報を理解し、設計に関する判断を下したら、次の手順でカスタム裁決プロバイダの実行時クラスを作成します。

AdjudicationProvider SSPI を実装する

AdjudicationProvider SSPI を実装するには、「Provider」SSPI の目的を理解するで説明されているメソッドと以下のメソッドの実装を提供する必要があります。

getAdjudicator

public Adjudicator getAdjudicator()

getAdjudicator メソッドは、Adjudicator SSPI の実装を取得します。MyAdjudicationProviderImpl.java という 1 つの実行時クラスの場合、getAdjudicator メソッドの実装は次のようになります。

return this;

実行時クラスが 2 つの場合、getAdjudicator メソッドの実装は次のようになります。

return new MyAdjudicatorImpl;

この理由は、AdjudicationProvider SSPI を実装する実行時クラスが、Adjudicator SSPI を実装するクラスを取得するためのファクトリとして使用されるからです。

AdjudicationProvider SSPI および getAdjudicator メソッドの詳細については、WebLogic Server 7.0 API リファレンス Javadoc を参照してください。

Adjudicator SSPI を実装する

Adjudicator SSPI を実装するには、以下のメソッドの実装を提供する必要があります。

initialize

public void initialize(String[] accessDecisionClassNames)

initialize メソッドは、「アクセスは許されるか」という質問への回答を得るために呼び出されるすべてのコンフィグレーション済み認可プロバイダのアクセス決定の名前を初期化します。accessDecisionClassNames パラメータは、裁決プロバイダの adjudicate メソッドで特定のアクセス決定による判定結果を支持するために使用することもできます。認可プロバイダとアクセス決定の詳細については、認可プロバイダを参照してください。

adjudicate

public boolean adjudicate( Result[] results )

adjudicate メソッドは、コンフィグレーション済みのアクセス決定から返された判定結果をすべて受け取り、「アクセスは許されるか」という質問への回答を決定します。

Adjudicator SSPI と initialize および adjudicate メソッドの詳細については、WebLogic Server 7.0 API リファレンス Javadoc を参照してください。

WebLogic MBeanMaker を使用して MBean タイプを生成する

カスタム セキュリティ プロバイダの MBean タイプを生成する前に、以下の作業が必要です。

この情報を理解し、設計に関する判断を下したら、次の手順でカスタム裁決プロバイダの MBean タイプを作成します。

  1. MBean 定義ファイル (MDF) を作成する

  2. WebLogic MBeanMaker を使用して MBean タイプを生成する

  3. WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) を作成する

  4. WebLogic Server 環境に MBean タイプをインストールする

注意: これらの手順の実行方法は、いくつかのサンプル セキュリティ プロバイダ (dev2dev Web サイトの「Code Samples: WebLogic Server」で入手可能) に示されています。

この節で説明する手順はすべて、Windows 環境での作業を想定しています。

MBean 定義ファイル (MDF) を作成する

MBean 定義ファイル (MDF) を作成するには、次の手順に従います。

  1. サンプル認証プロバイダの MDF をテキスト ファイルにコピーします。

    注意: サンプル認証プロバイダの MDF は、SampleAuthenticator.xml という名前です (現在、サンプル裁決プロバイダはありません)。

  2. カスタム裁決プロバイダに合わせて、作成する MDF の <MBeanType> および <MBeanAttribute> 要素の内容を変更します。

  3. カスタム属性および操作 (つまり、<MBeanAttribute> および <MBeanOperation> 要素) を MDF に追加します。

  4. ファイルを保存します。

注意: MDF 要素の構文についての完全なリファレンスは、MBean 定義ファイル (MDF) 要素の構文.に収められています。

WebLogic MBeanMaker を使用して MBean タイプを生成する

MDF を作成したら、WebLogic MBeanMaker を使用してそれを実行できます。WebLogic MBeanMaker は現在のところコマンドライン ユーティリティで、入力として MDF を受け取り、MBean インタフェース、MBean 実装、関連する MBean 情報ファイルなどの中間 Java ファイルをいくつか出力します。これらの中間ファイルが合わさって、カスタム セキュリティ プロバイダの MBean タイプになります。

MBean タイプの生成手順は、カスタム裁決プロバイダの設計に応じて異なります。必要な設計に合わせて適切な手順を実行してください。

カスタム操作を追加しない場合

カスタム裁決プロバイダの MDF にカスタム操作を含めない場合、次の手順に従います。

  1. 新しい DOS シェルを作成します。

  2. 次のコマンドを入力します。

    java -DMDF=xmlfile -Dfiles=filesdir -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker

    ここで、-DMDF フラグは WebLogic MBeanMaker が MDF をコードに翻訳する必要があることを示し、xmlFile は MDF (XML MBean 定義ファイル)、filesdir は WebLogic MBeanMaker で生成された MBean タイプの中間ファイルが格納される場所です。

    xmlfile が入力されるたびに、新しい出力ファイル群が生成されます。filesdir で指定された場所にファイルが既に存在する場合には、既存のファイルが上書きされることが通知され確認を求められます。

    -DcreateStubs=true フラグを使用するたびに、既存の MBean 実装ファイルがすべて上書きされます。

    注意: WebLogic MBeanMaker では MDF を一度に 1 つ処理します。そのため、MDF が複数ある (つまり裁決プロバイダが複数ある) 場合には、このプロセスを繰り返す必要があります。

  3. WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) を作成するに進みます。

カスタム操作を追加する場合

カスタム裁決プロバイダの MDF にカスタム操作を含める場合、質問に答えながら手順を進めてください。

  1. 新しい DOS シェルを作成します。

  2. 次のコマンドを入力します。

    java -DMDF=xmlfile -Dfiles=filesdir -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker

    ここで、-DMDF フラグは WebLogic MBeanMaker が MDF をコードに翻訳する必要があることを示し、xmlFile は MDF (XML MBean 定義ファイル)、filesdir は WebLogic MBeanMaker で生成された MBean タイプの中間ファイルが格納される場所です。

    xmlfile が入力されるたびに、新しい出力ファイル群が生成されます。filesdir で指定された場所にファイルが既に存在する場合には、既存のファイルが上書きされることが通知され確認を求められます。

    -DcreateStubs=true フラグを使用するたびに、既存の MBean 実装ファイルがすべて上書きされます。

    注意: WebLogic MBeanMaker では MDF を一度に 1 つ処理します。そのため、MDF が複数ある (つまり裁決プロバイダが複数ある) 場合には、このプロセスを繰り返す必要があります。

  3. MDF のすべてのカスタム操作に対して、メソッド スタブを使用してメソッドを実装します。

  4. ファイルを保存します。

  5. WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) を作成するに進みます。

  1. WebLogic MBeanMaker によって現在のメソッドの実装が上書きされないように、既存の MBean 実装ファイルを一時ディレクトリにコピーします。

  2. 新しい DOS シェルを作成します。

  3. 次のコマンドを入力します。

    java -DMDF=xmlfile -Dfiles=filesdir -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker

    ここで、-DMDF フラグは WebLogic MBeanMaker が MDF をコードに翻訳する必要があることを示し、xmlFile は MDF (XML MBean 定義ファイル)、filesdir は WebLogic MBeanMaker で生成された MBean タイプの中間ファイルが格納される場所です。

    xmlfile が入力されるたびに、新しい出力ファイル群が生成されます。filesdir で指定された場所にファイルが既に存在する場合には、既存のファイルが上書きされることが通知され確認を求められます。

    -DcreateStubs=true フラグを使用するたびに、既存の MBean 実装ファイルがすべて上書きされます。

    注意: WebLogic MBeanMaker では MDF を一度に 1 つ処理します。そのため、MDF が複数ある (つまり裁決プロバイダが複数ある) 場合には、このプロセスを繰り返す必要があります。

  4. MDF を変更して元の MDF にはないカスタム操作を含めた場合、メソッド スタブを使用してメソッドを実装します。

  5. 完成した、つまりすべてのメソッドを実装した MBean 実装ファイルを保存します。

  6. この MBean 実装ファイルを、WebLogic MBeanMaker が MBean タイプの実装ファイルを配置したディレクトリにコピーします。このディレクトリは、手順 3 で filesdir として指定しました (手順 3 の結果として WebLogic MBeanMaker で生成された MBean 実装ファイルがオーバーライドされる)。

  7. WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) を作成するに進みます。

生成される MBean インタフェース ファイルについて

MBean インタフェース ファイルとは、実行時クラスまたは MBean 実装がコンフィグレーション データを取得するために使用する MBean のクライアントサイド API です。「Provider」SSPI の目的を理解するで説明されているように、これは initialize メソッドで使用するのが一般的です。

WebLogic MBeanMaker では、作成済みの MDF から MBean タイプを生成するので、生成される MBean インタフェース ファイルの名前は、その MDF 名の後に「MBean」というテキストが付いたものになります。たとえば、WebLogic MBeanMaker で MyAdjudicator MDF を実行すると、MyAdjudicatorMBean.java という MBean インタフェース ファイルが生成されます。

WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) を作成する

WebLogic MBeanMaker で MDF を実行して中間ファイルを作成し、MBean 実装ファイルを手作業で編集してその中にメソッドの内容を記述したら、カスタム裁決プロバイダの MBean ファイルと実行時クラスを MBean JAR ファイル (MJF) にパッケージ化する必要があります。このプロセスも、WebLogic MBeanMaker によって自動化されます。

カスタム裁決プロバイダの MJF を作成するには、次の手順に従います。

  1. 新しい DOS シェルを作成します。

  2. 次のコマンドを入力します。

    java -DMJF=jarfile -Dfiles=filesdir weblogic.management.commo.WebLogicMBeanMaker

    ここで、-DMJF フラグは WebLogic MBeanMaker が新しい MBean タイプを格納する JAR ファイルをビルドする必要があることを示し、jarfile は MJF の名前、filesdir は WebLogic MBeanMaker で MJF に JAR 化する対象ファイルが存在する場所です。

    この時点でコンパイルが行われるので、エラーが発生するおそれがあります。jarfile が指定されていて、エラーが発生しなかった場合には、指定された名前の MJF が作成されます。

注意: 既存の MJF を更新する場合は、MJF をいったん削除してから再生成します。WebLogic MBeanMaker にも -DIncludeSource オプションがあり、それを指定すると、生成される MJF にソース ファイルを含めるかどうかを制御することができます。ソース ファイルには、生成されたソースと MDF そのものがあります。デフォルトは false です。このオプションは、-DMJF を使用しない場合には無視されます。

生成された MJF は、自らの WebLogic Server 環境にインストールすることも、顧客に配布してそれぞれの WebLogic Server 環境にインストールしてもらうこともできます。

WebLogic Server 環境に MBean タイプをインストールする

MBean タイプを WebLogic Server 環境にインストールするには、MJF を WL_HOME¥server¥lib¥mbeantypes ディレクトリにコピーします。ここで、WL_HOME は WebLogic Server の最上位のインストール ディレクトリです。このインストール コマンドによって、カスタム裁決プロバイダが「デプロイ」されます。つまり、カスタム裁決プロバイダを WebLogic Server Administration Console から管理できるようになります。

注意: WL_HOME¥server¥lib¥mbeantypes は、MBean タイプをインストールするデフォルトのディレクトリです。 ただし、WebLogic Server が追加ディレクトリで MBean タイプを検索するようにするには、サーバを起動するときに -Dweblogic.alternateTypesDirectory=<dir> コマンドライン フラグを使用します (<dir> はディレクトリ名のカンマ区切りのリスト)。 このフラグを使用すると、WebLogic Server は常にまず WL_HOME¥server¥lib¥mbeantypes から MBean タイプをロードし、その後に追加ディレクトリを検索して、(拡張子に関係なく) そのディレクトリに存在するすべての有効なアーカイブをロードします。 たとえば -Dweblogic.alternateTypesDirectory = dirX,dirY の場合、WebLogic Server はまず WL_HOME¥server¥lib¥mbeantypes から MBean タイプをロードし、その後に、dirX および dirY に存在する有効なアーカイブをロードします。

追加ディレクトリで MBean タイプを検索するように WebLogic Server に指示し、かつ Java セキュリティ マネージャを使用する場合は、weblogic.policy ファイルを更新して、MBean タイプ (したがってカスタム セキュリティ プロバイダも) に対する適切なパーミッションを与える必要があります。 詳細については、『WebLogic Security プログラマーズ ガイド』の「Java セキュリティ マネージャを使用しての WebLogic リソースの保護」を参照してください。

非セキュリティ プロバイダの JAR (バックアップ ファイルを含む) は、WL_HOME¥server¥lib¥mbeantypes ディレクトリ以外の場所に置くことをお勧めします。

カスタム裁決プロバイダをコンフィグレーションすることによって (Administration Console を使用してカスタム裁決プロバイダをコンフィグレーションするを参照) MBean タイプのインスタンスを作成して、GUI、他の Java コード、または API からそれらの MBean インスタンスを使用することができます。たとえば、WebLogic Server Administration Console を使用して、属性を取得/設定したり操作を呼び出したりすることもできますし、他の Java オブジェクトを開発して、そのオブジェクトで MBean をインスタンス化し、それらの MBean から提供される情報に自動的に応答させることもできます。なお、これらの MBean インスタンスをバックアップしておくことをお勧めします。詳細については、『WebLogic Server ドメイン管理』の「障害が発生したサーバの回復」の「セキュリティ コンフィグレーション データのバックアップ」を参照してください。

Administration Console を使用してカスタム裁決プロバイダをコンフィグレーションする

カスタム裁決プロバイダをコンフィグレーションするということは、裁決サービスを必要とするアプリケーションがアクセス可能なセキュリティ レルムにカスタム裁決プロバイダを追加するということです。

カスタム セキュリティ プロバイダのコンフィグレーションは管理タスクですが、カスタム セキュリティ プロバイダの開発者が行うこともできます。WebLogic Server Administration Console を使用したカスタム裁決プロバイダのコンフィグレーション手順については、『WebLogic Security の管理』の「カスタム セキュリティプロバイダのコンフィグレーション」を参照してください。

 

Back to Top Previous Next