WebSphere Application Server Network Deployment for i5/OS, Version 6.1   
             オペレーティング・システム: i5/OS

             目次と検索結果のパーソナライズ化

トラスト・アソシエーション用のカスタム・インターセプターの開発

使用するインターセプター・クラス・メソッドを定義することができます。 WebSphere Application Server は、 com.ibm.websphere.security.TrustAssociationInterceptor および com.ibm.wsspi.security.tai.TrustAssociationInterceptor の 2 つのトラスト・アソシエーション・インターセプター・インターフェースをサポートします。

始める前に

Tivoli WebSEAL 以外のサード・パーティー製リバース・プロキシー・サーバーを使用している場合は、ご使用のプロキシー・サーバーの製品インターセプター・インターフェースに関するインプリメンテーション・クラスを提供する必要があります。 ここでは、インプリメントする必要がある com.ibm.websphere.security.TrustAssociationInterceptor.java インターフェースについて説明します。
注: トラスト・アソシエーション・インターセプター (TAI) のインターフェース (com.ibm.wsspi.security.tai.TrustAssociationInterceptor) は、いくつかの新しい機能をサポートしており、既存の com.ibm.websphere.security.TrustAssociationInterceptor のインターフェースとは異なっています。

プロシージャー

  1. インターセプター・クラス・メソッドを定義します。 WebSphere Application Server には、以下のメソッドを定義するインターセプター Java インターフェース com.ibm.websphere.security.TrustAssociationInterceptor が備わっています。
    • public boolean isTargetInterceptor(HttpServletRequest req)WebTrustAssociationException; を作成します。

      isTargetInterceptor メソッドは、要求がインターセプターと関連付けられた プロキシー・サーバーから発信されているかどうかを判断します。インプリメンテーション・コードは、着信要求オブジェクトを検査して、 要求を転送しているプロキシー・サーバーがこのインターセプターにとって有効なプロキシー・サーバーであるかどうかを判別しなければなりません。 このメソッドの結果によって、インターセプターが要求を処理するかどうかが決まります。

    • public void validateEstablishedTrust (HttpServletRequest req)WebTrustAssociationException; を作成します。

      validateEstablishedTrust メソッドは、要求を発信したプロキシー・サーバーが信頼できるかどうかを判断します。 このメソッドは、 isTargetInterceptor メソッドのあとに呼び出されます。インプリメンテーション・コードは、プロキシー・サーバーを認証しなければなりません。 この認証メカニズムは、プロキシー・サーバー特有のものです。 例えば、WebSeal サーバー用の製品インプリメンテーションでは、 このメソッドは、基本認証情報を HTTP ヘッダーから取得し、WebSphere Application Server が 使用するユーザー・レジストリーと 照らし合わせてこの情報の妥当性を検査します。クレデンシャルが無効な場合、コードは WebTrustAssociationException を作成して、プロキシー・サーバーを信頼せず、要求を拒否することを示します。

    • public String getAuthenticatedUsername(HttpServletRequest req)WebTrustAssociationException; を作成します。

      getAuthenticatedUsername メソッドは、プロキシー・サーバーと WebSphere Application Server 間に信頼を確立した後に呼び出されます。製品は要求のプロキシー・サーバー認証を受け入れているため、ここで要求を許可する必要があります。 要求を許可するには、発信元リクエスターの名前を許可ポリシーに送信して、リクエスターに必須の特権があるかどうかを判別します。 このメソッドのインプリメンテーション・コードは HTTP 要求ヘッダーからユーザー名を抽出して、要求されたリソースに対する権限がユーザーにあるかどうかを判別する必要があります。 例えば、WebSEAL サーバーの製品インプリメンテーションの場合、このメソッドは HTTP 要求ヘッダー内で iv-user 属性を検索し、関連する ユーザー ID を抽出して許可します。

  2. インターセプターを構成します。インターセプターを構成可能にするには、インターセプターによって com.ibm.websphere.security.WebSphereBaseTrustAssociationInterceptor を拡張する必要があります。 以下のメソッドをインプリメントします。
    public int init (java.util.Properties props)。
    init(Properties) メソッドは、 インターセプターを初期化するために必要なプロパティーのセットを含んだ、java.util.Properties オブジェクトを受け入れます。 インターセプター用に設定されるすべてのプロパティーは、 (そのインターセプター用の「カスタム・プロパティー」リンクまたはスクリプトを使用することにより) このメソッドに送信されます。インターセプターの初期化には、これらのプロパティーが使用されます。 例えば、 本製品の WebSEAL サーバー用インプリメンテーションにおいては、 このメソッドはホストおよびポートを読み取るため、入ってくる要求は、 トラステッド・ホストおよびポートから発信される要求であるか検査されます。戻り値 0 は、インターセプターの初期化が成 功したことを意味しています。その他の値の場合は、 その初期化が失敗したことを意味しており、インターセプターは無視されます。

    以下のリストの適用度

    前のインプリメンテーションのトラスト・アソシエーション・インターセプターが、別のエラー状況を戻す場合は、例外に一致するようにインプリメンテーションを変更するか、あるいは以下の変更のいずれかを行うことができます。
    • com.ibm.websphere.security.trustassociation.initStatus プロパティーを、トラスト・アソシエーション・インターセプターのカスタム・プロパティーに追加します。 プロパティーを、インターセプターが正常に初期化されたことを示す値に設定します。 それ以外の値は、すべて失敗を意味することになります。 失敗した場合には、対応するトラスト・アソシエーション・インターセプターは使用されません。
    • com.ibm.websphere.security.trustassociation.ignoreInitStatus プロパティーを、トラスト・アソシエーション・インターセプターのカスタム・プロパティーに追加します。 このプロパティーの値を true に設定します。これにより、WebSphere Application Server がこの方法の状況を無視するように指示されます。 このプロパティーをカスタム・プロパティーに追加した場合、WebSphere Application Server は、前のバージョンと同様に、戻り状況を検査しません。
    public void cleanup ();
    このメソッドは、アプリケーション・サーバーを停止した場合に呼び出されます。インターセプターの終了を準備する場合に使用します。
    public void setVersion (String s);
    このメソッドはオプションです。バージョンを設定する場合に使用される、単なる情報用のメソッドです。 デフォルト値は Unspecified です。
    カスタム・インターセプター・インプリメンテーションでインプリメントされる以下のメソッドを構成する必要があります。 このリストにはメソッドのみが表示され、インプリメンテーションは含まれていません。
    ********************************************************************
    import java.util.*;
    import javax.servlet.http.HttpServletRequest;
    import com.ibm.websphere.security.*;
    
    public class myTAIImpl extends WebSphereBaseTrustAssociationInterceptor
          implements TrustAssociationInterceptor
    {
    
          public myTAIImpl ()
          {
          }
    
    
          public boolean isTargetInterceptor (HttpServletRequest req)
               creates WebTrustAssociationException
          {
    
               //return true if this is the target interceptor, else return false.
          }
    
    
          public void validateEstablishedTrust (HttpServletRequest req)
               creates WebTrustAssociationFailedException
          {
               //validate if the request is from the trusted proxy server.
               //throw exception if the request is not from the trusted server.
    
          }
    
          public String getAuthenticatedUsername (HttpServletRequest req)
               creates WebTrustAssociationUserException
          {
               //Get the user name from the request and if the user is
               //entitled to the requested resource
               //return the user. Otherwise, throw the exception
    
          }
    
    
          public int init (Properties props)
          {
               //initialize the implementation. If successful return 0, else return -1.
          }
    
          public void cleanup ()
          {
               //Cleanup code.
    
          }
    
    }
    ********************************************************************
    注: init(Properties) メソッドをカスタム・インターセプターの以前の記述に従ってインプリメントした場合、この注意事項はインプリメンテーションに適用されません。次のステップに進んでください。 以前のバージョンの com.ibm.websphere.security.WebSphereBaseTrustAssociationInterceptor には、public int init (String propsfile) メソッドが含まれています。インターセプター・プロパティーはファイルから読み取られないため、このメソッドは不要です。 プロパティーは管理コンソールまたはスクリプトを使用して、インターセプターの管理コンソール「カスタム・プロパティー」リンクに入力されます。 これらのプロパティーは、init(Properties) メソッドでインプリメンテーションに使用できるようになります。 ただし、後方互換性を保つために、init(String) メソッドは引き続きサポートされています。 以下の例のように、init(String) メソッドは init(Properties) のデフォルト・インプリメンテーションで呼び出されます。
    // Default implementation of init(Properties props) method. A Custom
       // implementation should override this.
       public int init (java.util.Properties props)
       {
          String type =
           props.getProperty("com.ibm.websphere.security.trustassociation.types");
          String classfile=
           props.getProperty("com.ibm.websphere.security.trustassociation."
           +type+".config");
          if (classfile != null && classfile.length() > 0 ) {
             return init(classfile);
          } else {
             return -1;
          }
       }

    init(String propsfile) メソッドではなく、init(Properties) メソッドを インプリメントするようにインプリメンテーションを変更します。上記の例のように、このデフォルト・インプリメンテーションはプロパティーを読み取って、プロパティー・ファイルをロードします。 com.ibm.websphere.security.trustassociation.types プロパティーは .config を値に連結して、プロパティーを含むファイルを取得します。

    注: init(Properties) メソッドをインプリメントする代わりに、init(String) メソッドを使用した場合でも、機能します。 唯一の要件は、カスタム・トラスト・アソシエーション・プロパティーを含むファイル名を、 管理コンソール内の、インターセプター用の「カスタム・プロパティー」リンク またはスクリプトを使用して入力することです。以下のメソッドの いずれか を使用して、プロパティーを入力することができます。最初のメソッドは、 WebSphere Application Server の以前のバージョンとの後方互換性に使用されます。
    メソッド 1:
    前のリリースで使用された、 同一のプロパティー名が、そのファイル名を取得するために使用されます。 そのファイル名は、com.ibm.websphere.security.trustassociation.types プロパティー値に .config を連結することにより取得されます。
    ファイル名が myTAI.properties という名前で、app_server_root/properties ディレクトリーに配置されている場合、次のようにプロパティーを設定します。
    • com.ibm.websphere.security.trustassociation.types = myTAItype
    • com.ibm.websphere.security.trustassociation.myTAItype.config = app_server_root/properties/myTAI.properties
    メソッド 2:
    トラスト・アソシエーションのカスタム・プロパティーにある com.ibm.websphere.security.trustassociation.initPropsFile プロパティーを、ファイルのロケーションに設定できます。 例えば、次のようにプロパティーを設定します。
    • com.ibm.websphere.security.trustassociation.initPropsFile=
      app_server_root/properties/myTAI.properties

    これらの行は、1 つの連続した行として入力してください。

    プロパティー・ファイルの場所は完全に修飾します (app_server_root/properties/myTAI.properties など)。Network Deployment 環境で場所が異なる可能性があるため、${USER_INSTALL_ROOT} などの変数を使用して、WebSphere Application Server のインストール・ディレクトリーを参照します。例えば、ファイル名が myTAI.propertiesapp_server_root/properties ディレクトリーに配置されている場合は、次のようにプロパティーを設定します。

  3. インプリメントしたインプリメンテーションをコンパイルします。以下に例を示します。 app_server_root/java/bin/javac -classpath install_root/lib/wssec.jar;<install_root>/lib/j2ee.jar myTAIImpl.java
    1. クラス・ファイルをクラス・パス内のロケーション (app_server_root/lib/ext ディレクトリーを推奨) にコピーします。
    2. すべてのサーバーを再始動します。
  4. 管理コンソールでデフォルト WebSEAL インターセプターを削除し、「新規」をクリックしてカスタム・インターセプターを追加します。 クラス名がドットで区切られていて、クラス・パスに表示されていることを確認します。
  5. カスタム・プロパティー」リンクをクリックして、 カスタム・インターセプターの初期化に必要な追加プロパティーを追加します。 上記ステップに従って com.ibm.websphere.security.WebSphereBaseTrustAssociationInterceptor を拡張した場合は、これらのプロパティーがインプリメンテーションの init(Properties) メソッドに渡されます。
  6. 該当する場合、構成を保管および同期化します。
  7. サーバーを再起動して、カスタム・インターセプターを有効にします。

カスタム・インターセプターの例については、 セキュリティー: 学習用リソースの項目を 参照してください。



サブトピック
サブジェクト作成用のトラスト・アソシエーション・インターセプターのサポート
関連概念
シングル・サインオン
Web コンポーネント・セキュリティー
関連タスク
カスタム・トラスト・アソシエーション・インターセプターの開発
関連資料
ディレクトリー規則
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 8:28:52 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/tsec_waci.html