トラスト・アソシエーション用のカスタム・インターセプターの開発
使用するインターセプター・クラス・メソッドを定義することができます。 WebSphere® Application Server は、com.ibm.wsspi.security.TrustAssociationInterceptor と com.ibm.wsspi.security.tai.TrustAssociationInterceptor の 2 つのトラスト・アソシエーション・インターセプター・インターフェースをサポートします。
始める前に
手順
- インターセプター・クラス・メソッドを定義します。 WebSphere Application Server には、以下のメソッドを定義するインターセプター Java™ インターフェース com.ibm.wsspi.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 を抽出して許可します。
- public boolean isTargetInterceptor(HttpServletRequest req) は WebTrustAssociationException; を作成します。
- インターセプターを構成します。インターセプターを構成可能にするには、インターセプターによって com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor を拡張する必要があります。
以下のメソッドを実装します。
- public int init (java.util.Properties props)。
- init(Properties) メソッドは、
インターセプターを初期化するために必要なプロパティーのセットを含んだ、java.util.Properties オブジェクトを受け入れます。
インターセプター用に設定されるすべてのプロパティーは、
(そのインターセプター用の「カスタム・プロパティー」リンクまたはスクリプトを使用することにより)
このメソッドに送信されます。インターセプターの初期化には、これらのプロパティーが使用されます。
例えば、
本製品の WebSEAL サーバー用実装においては、
このメソッドはホストおよびポートを読み取るため、入ってくる要求は、
トラステッド・ホストおよびポートから発信される要求であるか検査されます。戻り値 0 は、インターセプターの初期化が成
功したことを意味しています。その他の値の場合は、
その初期化が失敗したことを意味しており、インターセプターは無視されます。
以下のリストの適用度
前の実装のトラスト・アソシエーション・インターセプターが、別のエラー状況を戻す場合は、例外に一致するように実装を変更するか、あるいは以下の変更のいずれかを行うことができます。- com.ibm.wsspi.security.trustassociation.initStatus プロパティーを、トラスト・アソシエーション・インターセプターのカスタム・プロパティーに追加します。 プロパティーを、インターセプターが正常に初期化されたことを示す値に設定します。 それ以外の値は、すべて失敗を意味することになります。 失敗した場合には、対応するトラスト・アソシエーション・インターセプターは使用されません。
- com.ibm.wsspi.security.trustassociation.ignoreInitStatus プロパティーを、トラスト・アソシエーション・インターセプターのカスタム・プロパティーに追加します。 このプロパティーの値を true に設定します。これにより、WebSphere Application Server がこのメソッドの状況を無視するように指定されます。このプロパティーをカスタム・プロパティーに追加した場合、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) throws WebTrustAssociationException { //return true if this is the target interceptor, else return false. } public TAIResult negotiateValidateandEstablishTrust (HttpServletRequest req, HttpServletResponse res) throws WebTrustAssociationFailedException { //validate the request and establish trust. //create and return the TAIResult public int initialize(Properties props) { //initialize the implementation. If successful return 0, else return 1. } public String getVersion() { //Return version } public String getType() { //Return type } public void cleanup () { //Cleanup code. } }
注: init(Properties) メソッドをカスタム・インターセプターの以前の記述に従って実装した場合、この注意事項は実装に適用されません。次のステップに進んでください。 以前のバージョンの com.ibm.wsspi.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.wsspi.security.trustassociation.types"); String classfile= props.getProperty("com.ibm.wsspi.security.trustassociation." +type+".config"); if (classfile != null && classfile.length() > 0 ) { return init(classfile); } else { return -1; } }
init(String propsfile) メソッドではなく、init(Properties) メソッドを 実装するように実装を変更します。上記の例のように、このデフォルト実装はプロパティーを読み取って、プロパティー・ファイルをロードします。 com.ibm.wsspi.security.trustassociation.types プロパティーは .config を値に連結して、プロパティーを含むファイルを取得します。
注: init(Properties) メソッドを実装する代わりに、init(String) メソッドを使用した場合でも、機能します。 唯一の要件は、カスタム・トラスト・アソシエーション・プロパティーを含むファイル名を、 管理コンソール内の、インターセプター用の「カスタム・プロパティー」リンク またはスクリプトを使用して入力することです。以下のメソッドの いずれか を使用して、プロパティーを入力することができます。最初のメソッドは、 WebSphere Application Server の以前のバージョンとの後方互換性のために使用されます。- メソッド 1:
- 前のリリースで使用された、
同一のプロパティー名が、そのファイル名を取得するために使用されます。
そのファイル名は、com.ibm.wsspi.security.trustassociation.types プロパティー値に
.config を連結することにより取得されます。
ファイル名が myTAI.properties という名前で、app_server_root/properties ディレクトリーに配置されている場合、次のようにプロパティーを設定します。
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/properties/myTAI.properties
ファイル名が myTAI.properties という名前で、/properties ディレクトリーに配置されている場合、次のようにプロパティーを設定します。
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/myTAI.properties
- メソッド 2:
- トラスト・アソシエーションのカスタム・プロパティーにある
com.ibm.wsspi.security.trustassociation.initPropsFile プロパティーを、ファイルのロケーションに設定できます。
例えば、次のようにプロパティーを設定します。
com.ibm.wsspi.security.trustassociation.initPropsFile= app_server_root/properties/myTAI.properties
com.ibm.wsspi.security.trustassociation.initPropsFile= app_server_root/myTAI.properties
これらのコードは、1 つの連続した行として入力してください。
プロパティー・ファイルの場所は完全に修飾します (app_server_root/properties/myTAI.properties など)。WebSphere Application Server Network Deployment 環境で場所が異なる可能性があるため、${USER_INSTALL_ROOT} などの変数を使用して、WebSphere Application Server のインストール・ディレクトリーを参照します。例えば、ファイル名が myTAI.properties で app_server_root/properties ディレクトリーに配置されている場合は、次のようにプロパティーを設定します。
プロパティー・ファイルの場所は完全に修飾します (app_server_root/myTAI.properties など)。WebSphere Application Server Network Deployment 環境で場所が異なる可能性があるため、${USER_INSTALL_ROOT} などの変数を使用して、WebSphere Application Server のインストール・ディレクトリーを参照します。例えば、ファイル名が myTAI.properties という名前で、/properties ディレクトリーに配置されている場合、次のようにプロパティーを設定します。
- com.ibm.wsspi.security.trustassociation.types = myTAItype
com.ibm.wsspi.security.trustassociation.myTAItype.config = c:/WebSphere/AppServer/properties/myTAI.properties
com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/myTAI.properties
- 実装が完了したら、実装をコンパイルします。以下に例を示します。 app_server_root/java/bin/javac
-classpath install_root/plugins/com.ibm.ws.runtime.jar;<install_root>/dev/JavaEE/j2ee.jar
myTAIImpl.java
サーバーの始動時に使用するトラスト・アソシエーション・インターセプター・クラス・ファイルを特定します。 このファイルを app_server_root/classes ディレクトリーに入れるか、あるいは、Java 仮想マシン (JVM) システム・プロパティー -Dws.ext.dirs を使用して、このファイルが存在する場所を指定します。
カスタム・トラスト・アソシエーション・インターセプターのクラス・ファイルを、製品のクラスパスで指定されているロケーションにコピーします。 これらのクラス・ファイルは、profile_root/classes ディレクトリーにコピーします。
このクラス・ファイルは、各ノードおよびセルの profile_root/classes ディレクトリーにコピーする必要があります。
- すべてのサーバーを再始動します。
- 管理コンソールでデフォルト WebSEAL インターセプターを削除し、「新規」をクリックしてカスタム・インターセプターを追加します。 クラス名がドットで区切られていて、クラスパスに表示されていることを確認します。
- 「カスタム・プロパティー」リンクをクリックして、 カスタム・インターセプターの初期化に必要な追加プロパティーを追加します。 上記ステップに従って com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor を拡張した場合は、これらのプロパティーが実装の init(Properties) メソッドに渡されます。
- 該当する場合、構成を保存および同期化します。
- サーバーを再起動して、カスタム・インターセプターを有効にします。
例
サブトピック
サブジェクト作成用のトラスト・アソシエーション・インターセプターのサポート
トラスト・アソシエーション・インターセプター (TAI) の com.ibm.wsspi.security.tai.TrustAssociationInterceptor インターフェースは、既存の com.ibm.websphere.security.TrustAssociationInterceptor インターフェースとは異なるいくつかの機能をサポートしています。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_waci
ファイル名:tsec_waci.html