WebSphere Application Server - Express, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

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

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

Session Initiation Protocol (SIP) アプリケーションを開発する場合、 カスタム・トラスト・アソシエーション・インターセプター (TAI) を作成することができます。

始める前に

トラスト・アソシエーションの文書で説明されている TAI の一般情報を十分理解する必要があります。SIP TAI の開発は、トラスト・アソシエーションで使用される他のカスタム・インターセプターの開発と類似しています。実際、SIP アプリケーション用のカスタム TAI は、実質的にトラスト・アソシエーション・インターセプター・モデルの拡張機能です。

このタスクについて

TAI は、SIP サーブレット要求または SIP サーブレット応答によって起動することができます。 カスタム SIP TAI をインプリメントするには、ユーザー独自の Java クラスを書き込む必要があります。

プロシージャー

  1. com.ibm.wsspi.security.tai.BaseTrustAssociationInterceptor クラスを拡張、および com.ibm.websphere.security.tai.SIPTrustAssociationInterceptor インターフェースをインプリメントする Java クラスを書き込みます。 これらのクラスは、WASProductDir/plugins/com.ibm.ws.sip.container_1.0.0.jar ファイルで定義されており、 ここで、WASProductDir は、WebSphere Application Server がインストールされているディレクトリーの完全修飾パス名です。
  2. 以下の Java メソッドを宣言します。
    public int initialize(Properties properties) throws WebTrustAssociationFailedException;
    この Java メソッドが起動された後で、必要とされるリソースすべてがインプリメンテーションによって割り振られるように、最初のメッセージが処理されます。例えば、この Java メソッドが起動されたことにより、データベースへの接続が設定されます。WebTrustAssociationFailedException は、WASProductDir/plugins/com.ibm.ws.runtime_1.0.0.jar ファイルで定義されています。 properties 引数の値は、このステップ の中の「カスタム・プロパティー」 設定から得られます。
    public void cleanup();
    この Java メソッドは、TAI が保持しているリソースすべてを解放する必要がある場合に起動されます。 例えば、 この Java メソッドの起動によって、データベースへの接続がクローズされます。
    public boolean isTargetProtocolInterceptor(SipServletMessage sipMsg) throws WebTrustAssociationFailedException;
    カスタム TAI では、sipMsg メッセージを処理するために、このメソッドを使用する必要があります。このメソッドが false を戻す場合、WebSphere では sipMsg に対する TAI が無視されます。
    public TAIResult negotiateValidateandEstablishProtocolTrust (SipServletRequest req, SipServletResponse resp) throws WebTrustAssociationFailedException;
    このメソッドは、処理されたメッセージの状況を示す TAIResult、および 認証を試行中のユーザーに対するユーザー ID または固有 ID を戻します。認証が正常に行われた場合、TAIResult には、 状況 HttpServletResponse.SC_OK およびプリンシパルが含まれている必要があります。認証が失敗した場合、 TAIResult には、HttpServletResponse.SC_UNAUTHORIZED (401)、SC_FORBIDDEN (403)、または SC_PROXY_AUTHENTICATION_REQUIRED (407) の戻りコードが含まれている必要があります。 これ以上の処理に対するメッセージをコンテナーで受け入れる必要があるかどうかのみが、指示されます。着信要求を要請する場合は、TAI インプリメンテーションで、要請を含む独自の SipServletResponse を生成および送信する必要があります。例外は、 内部 TAI エラーについてスローされます。negotiateValidateandEstablishProtocolTrust 引数およびアクションについての説明では、 negotiateValidateandEstablishProtocolTrust メソッドに対する引数値、および結果として起こるアクションについて説明しています。
    表 1. negotiateValidateandEstablishProtocolTrust 引数およびアクションについての説明
    引数またはアクション SIP 要求の場合 SIP 応答の場合
    req 引数の値 着信要求 Null
    resp 引数の値 Null 着信応答
    有効な応答クレデンシャルに対するアクション SC_OK を含む TAIResult.status およびユーザー ID または固有 ID を戻します。 SC_OK を含む TAIResult.status およびユーザー ID または固有 ID を戻します。
    正しくない応答クレデンシャルに対するアクション 4xx 状況を伴う TAIResult を戻します。 4xx 状況を伴う TAIResult を戻します。
    イベントの手順は以下のとおりです。
    1. SIP コンテナーにより、各アプリケーション・デプロイメント記述子における規則を使用して、初期要求がアプリケーションにマップされます。 つまり、これ以降のメッセージはJSR 116メカニズムに基づいてマップされます。
    2. アプリケーションのいずれかでセキュリティーが必要な場合、SIP コンテナーによって、 メッセージに対して定義された TAI インプリメンテーションのいずれかが起動されます。
    3. メッセージによってセキュリティーが受け渡される場合、コンテナーによって、対応するアプリケーションが起動されます。
    TAI インプリメンテーションによって SIP メッセージを変更することはできますが、 変更したメッセージは、コンテナーによって TAI が起動される前に終了するため、 要求マッピング・プロセス内で使用することはできません。

    WASProductDir/plugins/com.ibm.ws.runtime_1.0.0.jar ファイルで定義されている com.ibm.wsspi.security.tai.TAIResult クラスには、TAIResult 作成用の 3 つの静的メソッドがあります。 TAIResult create メソッドでは、 int 型が最初のパラメーターとして実行されます。WebSphere Application Server では、 結果が有効な HTTP 要求戻りコードとなる必要があり、以下のように解釈されます。

    値が HttpServletResponse.SC_OK ならば、この応答は WebSphere Application Server に対し、TAI のネゴシエーションが終了したことを知らせます。この応答はまた、WebSphere Application Server に、TAIResult の情報を使ってユーザー ID を作成するよう指示します。

    作成された TAIResults は、TAIResults の意味に示される意味を持ちます。

    表 2. TAIResults の意味
    TAIResult 説明
    public static TAIResult create(int status); WebSphere Application Server に対する状態を示します。 識別情報が提供されるため、この結果は SC_OK にはなりません。
    public static TAIResult create(int status, String principal); WebSphere Application Server に対する状態を示し、このユーザーのユーザー ID または固有の ID を提供します。 WebSphere Application Server はユーザー・レジストリーを照会してクレデンシャルを作成します。
    public static TAIResult create(int status, String principal, Subject subject); WebSphere Application Server に対する状態、そのユーザーのユーザー ID または固有の ID、そしてカスタム・サブジェクトを示します。 サブジェクトに hashtable が含まれている場合は、基本は無視されます。 サブジェクトの内容は最終的なユーザー・サブジェクトの一部となります。
    public String getVersion();
    このメソッドでは、現行 TAI インプリメンテーションのバージョン番号が戻されます。
    public String getType();
    このメソッドの戻り値は、インプリメンテーションによって異なります。
  3. インプリメント後に、インプリメンテーションをコンパイルします。以下に例を示します。/opt/WebSphere/AppServer/java/bin/javac -classpath /opt/WebSphere/AppServer/plugins/com.ibm.ws.runtime_1.0.0.jar;/opt/WebSphere/AppServer/lib/j2ee.jar;/opt/WebSphere/AppServer/plugins/com.ibm.ws.sip.container_1.0.0.jar myTAIImpl.java
    1. クラスター内の各サーバーの場合には、 WebSphere クラスパス内のロケーション (可能な場合は WASProductDir/plugin/ ディレクトリー) にクラス・ファイルをコピーします。
    2. すべてのサーバーを再始動します。
  4. 管理コンソールでデフォルト WebSEAL インターセプターを削除し、 「新規」をクリックしてカスタム・インターセプターを追加します。このクラス名がドットで区切られており、 クラス・パス内に表示されることを確認してください。
  5. 「カスタム・プロパティー」リンクをクリックして、 カスタム・インターセプターの初期化に必要な追加プロパティーを追加します。これらのプロパティーは、前のステップで説明されているとおり、com.ibm.websphere.security.WebSphereBaseTrustAssociationInterceptor が拡張される際に、インプリメンテーションの initialize(Properties properties) メソッドに渡されます。
  6. 該当する場合、構成を保管および同期化します。
  7. カスタム・インターセプターを有効にするには、サーバーを再始動してください。



関連概念
トラスト・アソシエーション
関連タスク
すべての SIP トピックをブラウズする
カスタム・トラスト・アソシエーション・インターセプターの構成
SIP アプリケーションの開発
関連情報
トラスト・アソシエーション・インターセプター設定
タスク・トピック    

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

最終更新: Jan 21, 2008 6:25:35 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tsip_devctai.html