Web サービス・セキュリティーの機能拡張

WebSphere® Application Server バージョン 6 には、Web サービスを保護するためのいくつかの機能拡張があります。 これらの機能拡張については、本項で詳しく説明します。

ID 表明の使用

イントラネット、Secure Sockets Layer (SSL) 接続などの保護された環境または Virtual Private Network (VPN) を介して、パスワードなどのクリデンシャルなしで、サーバー識別などのトラストされたクリデンシャルとともに、要求側の識別を送信することは便利です。 WebSphere Application Server バージョン 6 は、以下のタイプの ID 表明をサポートしています。
  • パスワードなしのユーザー名トークン
  • X.509 証明書の X.509 トークン
X.509 証明書では、WebSphere Application Server は、要求側の識別として証明書の識別名を使用します。 アップストリーム・サーバーのトラストを検証するために、2 つのトラスト・モードがあります。
基本認証 (ユーザー名トークン)
アップストリーム・サーバーは、ユーザー名とパスワードを持つユーザー名トークンをダウンストリーム・サーバーに送信します。 メッセージのコンシューマーと受信側は、ユーザー名トークンを認証し、TrustedIDEvaluator 実装に基づいてトラストを検証します。 TrustedIDEvaluator 実装は、com.ibm.wsspi.wssecurity.id.TrustedIDEvaluator Java™ インターフェースを実装する必要があります。
署名
アップストリーム・サーバーはメッセージに署名します。Simple Object Access Protocol (SOAP) 本体のようなメッセージのどのパーツでも構いません。アップストリーム・サーバーは、X.509 トークンをダウンストリーム・サーバーに送信します。 メッセージのコンシューマーと受信側は、署名を検証し、X.509 トークンの妥当性検査を行います。 デジタル・シグニチャーで使用される X.509 トークンから識別または識別名を、TrustedIDEvaluator 実装に基づいて検証します。TrustedIDEvaluator 実装は、com.ibm.wsspi.wssecurity.id.TrustedIDEvaluator Java インターフェースを実装する必要があります。

以下の図は、ID 表明トラスト・プロセスを示しています。

ID 表明トラスト妥当性検査

この図で、 サーバー s1 はアップストリーム・サーバーで、ID 表明はサーバー s1 とサーバー s2 の間でセットアップされています。 s1 サーバーは、bob と呼ばれる識別を認証します。サーバー s1 は、bob をパスワードを持つ s2 サーバーに送信することを希望しています。トラスト・モードは、識別とパスワードを含む s1 クリデンシャルです。サーバー s2 は、 要求を受信し、Java 認証・承認サービス (JAAS) ログイン・モジュールを使用してユーザーを認証して、 識別をトラストするかどうかを決定するためにトラステッド ID エバリュエーターを使用します。 識別がトラストされると、bob はサービスを呼び出す呼び出し元として使用されます。 権限が必要な場合、bob は許可検査に使用される識別です。

WebSphere Application Server バージョン 6 では、識別を現在のセキュリティー・コンテキストの RunAs (呼び出し) 識別として表明することができます。 例えば、Web サービス・ゲートウェイが、パスワード認証などのセキュア・メソッドを使用して要求側を認証し、 要求側の識別をバックエンド・サーバーにのみ送信します。 また、別の Web サービス・セキュリティーの実装とのインターオペラビリティーのために ID 表明を使用することができます。

プラグ可能なトークン・フレームワークの使用

Organization for the Advancement of Structured Information Standards (OASIS) Web Services Security バージョン 1.0 仕様は、セキュリティー・トークンと SOAP メッセージを関連付ける汎用メカニズムを定義します。 WebSphere Application Server バージョン 6 では、プラグ可能なトークン・フレームワークはこのフレキシブルなメカニズムを処理できるよう拡張されています。 以下の図は、このプラグ可能なフレームワークを示しています。

プラグ可能なフレームワーク

以下の用語が、前の図に使用されています。
TokenGenerator
トークン生成プログラム、または com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent Java インターフェースは、以下のアクションを担当しています。
  • トークンの SOAP メッセージの正しい XML 表記へのマーシャル。 この場合、マーシャルは、ネットワークを介してトークンを送信する前に、トークンを標準化されたフォーマットに変換するプロセスです。
  • トークンのローカル JAAS サブジェクトへの設定。
  • 鍵情報タイプに基づく正しいトークン ID の生成。
トークン生成プログラムは、トークン取得のために、CallbackHandler または javax.security.auth.callback.CallbackHandler Java インターフェースを呼び出します。 javax.security.auth.callback.Callback Java インターフェースを使用して、情報をコールバック・ハンドラーからトークン生成プログラムに渡します。
CallbackHandler
コールバック・ハンドラーまたは javax.security.auth.callback.CallbackHandler Java インターフェースは、GUI プロンプト、 標準内プロンプト、外部トークン・サービスへの対話などのメソッドを使用して、 トークンを取得することを担当しています。
TokenConsumer
トークン・コンシューマー、または com.ibm.wsspi.wssecurity.token.TokenConsumerComponent Java インターフェースは、以下のアクションを担当しています。
  • SOAP メッセージ内の XML フォーマットからのトークンのアンマーシャル。 この場合、アンマーシャルは、トークンを標準ネットワーク・フォーマットからローカルまたはネイティブ・フォーマットへ変換するプロセスです。
  • トークンを検証するための JAAS ログイン構成の呼び出し
  • 正しい WSSToken、または com.ibm.wsspi.wssecurity.auth.token.WSSToken Java 抽象クラスの、ローカル JAAS サブジェクトへの設定。
Web サービス・セキュリティー処理の最後の段階で、ローカル JAAS サブジェクト・コンテンツを使用して、WebSphere クリデンシャルとプリンシパルを作成します。呼び出し元サブジェクトは、ローカル JAAS サブジェクトのコンテンツに基づいて作成されます。
JAAS ログイン構成
JAAS ログイン構成はトークンの妥当性検査を担当します。 検査プロセスでは、WebSphere Application Server 認証モジュールに呼び出しを行ったり、サード・パーティー・トークン・サービスを呼び出したりします。

カスタム・トークンによるデータの署名または暗号化

鍵ロケーター、または com.ibm.wsspi.wssecurity.keyinfo.KeyLocator Java インターフェースは、 仕様の柔軟性をサポートするように拡張されています。 鍵ロケーターは、鍵の場所を探します。 ローカル JAAS サブジェクトは、コンテキストの KeyLocator.getKey() メソッドに渡されます。 鍵ロケーターの実装は、鍵をトークンから派生させます。それは、メッセージに署名し、メッセージ内の署名を検証し、メッセージを暗号化し、あるいはメッセージの暗号化解除を行うために、トークン生成プログラムまたはトークン・コンシューマーによって作成されます。
重要: com.ibm.wsspi.wssecurity.keyinfo.KeyLocator Java インターフェースは、WebSphere Application Server バージョン 5.x のバージョンとは異なります。バージョン 5.x の com.ibm.wsspi.wssecurity.config.KeyLocator インターフェースは推奨されていません。バージョン 5.x からバージョン 6 への鍵ロケーターの自動マイグレーションはありません。 バージョン 5.x 鍵ロケーターの実装のソース・コードをバージョン 6 の鍵ロケーター・プログラミング・モデルにマイグレーションする必要があります。

XML 要素の署名または暗号化

デプロイメント記述子は、署名または暗号化する XML 要素を選択する XPath 式をサポートします。 ただし、SOAP エンベロープ、SOAP ヘッダー、または Web サービス・セキュリティー・ヘッダーに署名する場合は、エンベロープ・シグニチャーが使用されます。

LTPA のサポート

Lightweight Third Party Authentication (LTPA) は、Web サービス・セキュリティーでバイナリー・セキュリティー・トークンとしてサポートされます。トークン・タイプは、http://www.ibm.com/websphere/appserver/tokentype/5.0.2/LTPA です。

タイム・スタンプのサポート拡張

署名処理中、Web サービス・セキュリティー・ヘッダー以外の他の要素にタイム・スタンプを挿入することができます。 このタイム・スタンプは、要素に制限時間を追加するメカニズムを提供します。 ただし、このサポートは、WebSphere Application Server バージョン 6 の拡張機能です。他のベンダーによる実装は、メッセージに挿入される追加のタイム・スタンプで生成されるメッセージを受信する機能を持っていない場合があります。

nonce のサポート拡張

ランダムに生成される値である nonce をユーザー名トークン以外の他の要素に挿入することができます。 nonce を使用すると、リプレイ・アタックの可能性を低減することができます。ただし、このサポートは、WebSphere Application Server バージョン 6 の拡張機能です。他のベンダーによる実装は、ユーザー名トークン以外の要素に挿入される nonce でメッセージを受信する機能を持っていない場合があります。

nonce キャッシングの分散サポート

nonce キャッシングの分散は、 クラスターのサーバー間で nonce データを複製することができる WebSphere Application Server バージョン 6 の Web サービス用の新しい機能です。 例えば、クラスター C にアプリケーション・サーバー A とアプリケーション・サーバー B があるとします。 アプリケーション・サーバー A が値 X を持つ nonce を受け入れ、アプリケーション・サーバー B は指定された時間内に同じ値を持つ nonce を受信すると、SoapSecurityException をスローします。 ただし、アプリケーション・サーバー B が値 Y を持つ別の nonce を受信すれば、 例外をスローしませんが、その nonce をキャッシュに入れ、同じクラスター内の別のアプリケーション・サーバーにコピーします。

重要: 分散 nonce キャッシング機能は、WebSphere Application Server Distributed Replication Service (DRS) を使用します。ローカル・キャッシュのデータは、同じ複製ドメインの別のサーバーにあるキャッシュにプッシュされます。 複製は、処理外の呼び出しで、場合によっては、リモート呼び出しになります。 そのため、クラスター内の各アプリケーション・サーバーのキャッシュのコンテンツが更新されている間、複製が遅れる可能性があります。 この遅れは、ネットワーク・トラフィック、ネットワーク・ワークロード、マシン・ワークロードなどによるものです。

X.509 証明書のキャッシング

WebSphere Application Server バージョン 6 は、デフォルトで、証明書パス検証を回避し、そのパフォーマンスを改善するために、受け取る X.509 証明書をキャッシュに入れます。 ただし、この変更は、機密漏れにつながる恐れがあります。 以下のステップを使用して、X.509 証明書のキャッシングを使用不可にすることができます。

サーバー・レベルの場合:
  • サーバー」>「アプリケーション・サーバー」>「server_name」の順にクリックします。
  • 「セキュリティー」の下で、「Web services: Default bindings for Web services security」をクリックします。
  • 「追加プロパティー」の下で、「プロパティー」>「新規」の順にクリックします。
  • 「プロパティー名」フィールドで、com.ibm.ws.wssecurity.config.token.certificate.useCache と入力します。
  • 「プロパティー値」フィールドで、false と入力します。

証明書失効リストへのサポート提供

WebSphere Application Server バージョン 6 の証明書失効リスト (CRL) を使用して、証明書パスの妥当性検査を強化します。妥当性検査のために、 コレクション証明書ストアで CRL を指定することができます。 また、PKCS#7 エンコードを使用して X.509 トークンで CRL をエンコードすることもできます。ただし、WebSphere Application Server バージョン 6 は、X.509 トークンで X509PKIPathv1 CRL エンコードをサポートしません。
重要: PKCS#7 エンコードは、IBM® 証明書パス (IBM CertPath) プロバイダーでのみテストされました。 エンコードは、他の証明書パス・プロバイダーではサポートされません。
関連概念
Nonce、ランダムに生成されるトークン
コレクション証明書ストア
証明書失効リスト

フィードバック