WebSphere Application Server バージョン 6 以降のバージョンには、Web サービスを保護するための機能強化がいくつも含まれています。
アプリケーションの作成
WebSphere Application Server によってのみ使用される Web サービス・セキュリティー・ランタイム実装は、IBM Web Service ランタイムに基づいています。同様に、IBM Web サービス・ランタイムは、IBM 拡張機能を搭載したオープン・ソースの Axis Web Service エンジンに基づいています。
アプリケーション・プログラミング・モデルは JAX-RPC (JSR-109) です。オープン・ソースの Axis
Web Service エンジンは、文書オブジェクト・モデルとして DOM を使用します。
アプリケーションをアセンブルし
、デプロイメント記述子およびバインディングで Web サービス・セキュリティーのセキュリティー制約を指定するには、アセンブリー・ツー
ルを使用することが推奨されます。
また WebSphere Application Server 管理コンソールを使用して、
アプリケーション・バインディング・ファイルを編集することもできます。
ID アサーションの使用
イントラネット、Secure Sockets Layer (SSL) 接続、
または仮想私設網 (VPN) などの機密保護機能のある環境では、
パスワードなどのクレデンシャルを用いずに、サーバー ID など他の信頼できるクレデンシャルを用いて要求側 ID のみを送信すると便利です。
WebSphere Application Server は、以下のタイプの ID アサーションをサポートします。
- パスワードなしでのユーザー名トークン
- X.509 証明書用の X.509 トークン
X.509 証明書の場合、WebSphere Application Server は、
要求側 ID として証明書内の識別名を使用します。
アップストリーム・サーバーの信頼性を検証するために、
以下の 2 つのトラスト・モードがあります。
- 基本認証 (ユーザー名トークン)
- アップストリーム・サーバーは、
ユーザー名とパスワードを持つユーザー名トークンをダウンストリーム・サーバーに送信します。
メッセージのコンシューマーまたは受信側は、ユーザー名トークンを認証し、
TrustedIDEvaluator インプリメンテーションに基づいて信頼性を検証します。
TrustedIDEvaluator インプリメンテーションは、
com.ibm.wsspi.wssecurity.id.TrustedIDEvaluator Java インターフェースをインプリメントする必要があります。
- シグニチャー
- アップストリーム・サーバーはメッセージに署名します。
このメッセージは SOAP 本体など、
メッセージのどのパーツであってもかまいません。
アップストリーム・サーバーは、X.509 トークンをダウンストリーム・サーバーに送信します。
メッセージのコンシューマーまたは受信側は、
シグニチャーを検査し、X.509 トークンを検証します。
デジタル・シグニチャーで使用される X.509 トークンからの ID または識別名は、
TrustedIDEvaluator インプリメンテーションに基づいて検証されます。
TrustedIDEvaluator インプリメンテーションは、
com.ibm.wsspi.wssecurity.id.TrustedIDEvaluator Java インターフェースをインプリメントする必要があります。
次の図は、ID アサーションのトラスト・プロセスを示しています。

この図では、サーバー s1 がアップストリーム・サーバーであり、s1 とサーバー s2 の間で ID アサーションがセットアップされています。s1 サーバーが、bob という名前の ID を認証します。
サーバー s1 は、bob をパスワードと共に s2 サーバーに送信しようとします。
トラスト・モードは、ID とパスワードを含んだ s1 クレデンシャルです。
サーバー s2 は、要求を受信し、
Java Authentication and Authorization Service (JAAS) ログイン・モジュールを使用してユーザーを認証し、
トラステッド ID エバリュエーターを使用して、この ID を信頼するかどうかを判別します。
ID が信頼されると、
bob はサービスを呼び出す呼び出し元として使用されます。
許可が必要な場合、bob は、許可検査に使用される ID となります。
WebSphere Application Server バージョン 6 以降では、
ID は現行セキュリティー・コンテキストの RunAs (呼び出し) ID として表明することができます。
例えば、Web サービス・ゲートウェイは、
パスワード認証などの保護方式を使用して要求側を認証してから、
要求側 ID のみをバックエンド・サーバーに送信します。
ID アサーションは、別の Web サービス・セキュリティー・インプリメンテーションとのインターオペラビリティーのために使用することもできます。
プラグ可能トークン・フレームワークの使用
OASIS Web サービス・セキュリティー仕様ではセキュリティー・トークンを SOAP メッセージに関連付けるための汎用メカニズムを定義しています。
WebSphere Application Server では、プラグ可能トークン・フレームワークが、この柔軟なメカニズムを扱うように強化されています。
次の図は、このプラグ可能フレームワークを示しています。

前の図では、以下の用語が使用されています。
- TokenGenerator
- トークン・ジェネレーター、
つまり com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent Java インターフェースは、以下のアクションを担います。
- トークンを、SOAP メッセージ用の正しい XML 表記にマーシャルすること。
この場合、マーシャルとは、トークンを、ネットワークを介して伝送する前に、
標準化されたフォーマットに変換する処理のことです。
- トークンをローカル JAAS Subject に設定すること。
- 鍵情報タイプに基づいて正しいトークン 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 Subject に設定すること。
Web サービス・セキュリティー処理の最終段階で、ローカル JAAS Subject のコンテントは、
WebSphere のクレデンシャルおよびプリンシパルを作成するために使用されます。
呼び出し元 Subject は、ローカル JAAS Subject のコンテントに基づいて作成されます。
- JAAS ログイン構成
- JAAS ログイン構成は、トークンを検証する役割を担います。
この検査プロセスには、WebSphere Application Server 認証モジュールへの呼び出し、
またはサード・パーティー・トークン・サービスの呼び出しを伴います。
カスタム・トークンを用いたデータの署名または暗号化
鍵ロケーター、
つまり com.ibm.wsspi.wssecurity.keyinfo.KeyLocator Java インターフェースは、
仕様の柔軟性をサポートするように強化されています。
鍵ロケーターは、鍵を見付ける役割を担います。
ローカル JAAS Subject は、
コンテキスト内の 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 の拡張機能です。他のベンダー・インプリメンテーションでは、
追加のタイム・スタンプが挿入された状態で生成されるメッセージを利用する機能がない可能性があります。
nonce のサポートの拡張
ランダムに生成された値である nonce を、ユーザー名トークン以外の他のエレメントに挿入することができます。
nonce は、リプレイ・アタックの可能性を減少させるために使用されます。
このサポートは、WebSphere Application Server の拡張機能です。他のベンダー・インプリメンテーションでは、ユーザー名トークン以外のエレメントに挿入された nonce 付きのメッセージを利用する機能がない可能性があります。
分散 nonce キャッシングのサポート
分散 nonce キャッシングは、
WebSphere Application Server バージョン 6 以降における Web サービスの新しいフィーチャーです。
これにより、nonce データをクラスター内のサーバー間で複製することができます。
例えば、アプリケーション・サーバー A とアプリケーション・サーバー B がクラスター C 内にあるとします。
アプリケーション・サーバー A が値 X を持つ nonce を受信し、
アプリケーション・サーバー B が、指定された時間内に同じ値を持つ nonce を受信した場合、
アプリケーション・サーバー B は SoapSecurityException を作成します。
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 は、検証のためにコレクション証明書ストア内に指定することができます。
CRL はまた、PKCS#7 エンコードを使用して X.509 トークンでエンコードすることもできます。
ただし、WebSphere Application Server バージョン 6 以降では、
X.509 トークンでの X509PKIPathv1 CRL エンコードをサポートしていません。
重要: PKCS#7 エンコードは、
IBM 証明書パス (IBM CertPath) プロバイダーでのみテストされました。
このエンコードは、他の証明書パス・プロバイダーに対してはサポートされていません。