Web Services Security の機能強化
WebSphere® Application Server には、Web サービスを保護するための数多くの機能強化が含まれています。例えば、WebSphere Application Server バージョン 6.1 Feature Pack for Web Services 以降では、Web サービスのセキュリティー構成を簡単に行うためのポリシー・セットがサポートされています。
アプリケーションの作成
WebSphere Application Server バージョン 8 によって 使用される Web Services Security ランタイム実装は、Java™ API for XML Web Services (JAX-WS) プログラミング・モデルに基づいています。JAX-WS ランタイム環境は、Apache Open Source Axis2 に基づいており、そのデータ・モデルは AXIOM です。デプロイメント記述子およびバインディングの代わりに、構成にはポリシー・セットが使用されます。 WebSphere Application Server の管理コンソールを使用すると、ポリシー・セットに関連付けられているアプリケーション・バインディング・ファイルを編集することができます。JAX-WS ランタイムは、WebSphere Application Server V6.1 Feature Pack for Web Services 以降に対してサポートされています。
デプロイメント記述子とバインディングを使用する JAX-RPC プログラミング・モデルもまだサポートされています。詳しくは、トピック『メッセージ・レベル・セキュリティーを使用した JAX-RPC Web サービスの保護』を参照してください。
ポリシー・セットの使用
ポリシー・セットを使用して、ご使用の Web サービスのサービスの品質構成を簡素化します。
ポリシー・セットでは、Web Services Addressing (WS-Addressing)、Web Services Reliable Messaging (WS-ReliableMessaging)、および Web Services Security (WS-Security) (これには Secure Conversation (WS-SecureConversation) が含まれます) など、トランスポート・レベルの構成設定およびメッセージ・レベルの構成設定などの構成設定が組み合わせられます。
トラスト・ポリシーの管理
Web Services Security Trust (WS-Trust) は、Web Services Secure Conversation (WS-SecureConversation) のセキュリティー・コンテキスト・トークンをエンドポイントが発行するための機能を提供します。 トークン発行のサポートは、セキュリティー・コンテキスト・トークンに限定されます。 トラスト・ポリシー管理は、トークンの発行、取り消し、検証、および更新などの各トラスト・サービス操作のポリシーを定義します。 クライアントのブートストラップ・ポリシーは、WebSphere Application Server のトラスト・サービス・ポリシーに対応している必要があります。
セッション・ベースのメッセージの保護
Web Services Secure Conversation は、長いメッセージ交換のためのセキュアなセッションを提供し、対称暗号アルゴリズムを利用します。 WS-SecureConversation は、Web Services Security 高信頼性メッセージング (WS-ReliableMessaging) などのセッション・ベースのメッセージ交換パターンを保護するための基本セキュリティーを提供します。
メッセージ・レベルのセキュリティーの更新
- シグニチャーの確認
- 暗号化ヘッダー
シグニチャー確認により、XML デジタル署名のセキュリティーの保護が強化されています。<SignatureConfirmation> エレメントは、応答側が要求内の署名を処理したことを示し、シグニチャーの確認は、その署名が意図した受信者により確かに処理されたことを保証します。 シグニチャーの確認を正しく処理するには、要求のイニシエーターが要求生成処理中にシグニチャーを保存し、後で確認チェックのためにシグニチャーを取り出す必要があります。これは、Web サービスがステートレスな性質のものであっても、また、異なるメッセージ交換パターンの場合にも当てはまります。 ポリシーを構成して、シグニチャーの確認を使用可能にします。
暗号化ヘッダー・エレメントは SOAP ヘッダーを暗号化するための標準的な方法 (インターオペラビリティーに役立ちます) を提供します。 SOAP メッセージ・セキュリティー仕様で定義されているように、<EncryptedHeader> エレメントは、特定の SOAP ヘッダー (またはヘッダーのセット) を保護する必要があることを示します。SOAP のヘッダーおよびパーツの暗号化により、よりセキュアなメッセージ・レベルのセキュリティーを提供できます。 EncryptedHeader エレメントは SOAP mustUnderstand 処理ガイドラインへの準拠を保証し、SOAP ヘッダー・ブロック上の属性に含まれる情報の開示を防ぎます。
ID アサーションの使用
- パスワードなしでのユーザー名トークン
- X.509 証明書用の X.509 トークン
ID アサーションについて詳しくは、トピック『トラステッド ID エバリュエーター』を参照してください。
カスタム・トークンを用いたデータの署名または暗号化
JAX-RPC プログラミング・モデルの場合、鍵ロケーター、すなわち 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 以降の鍵ロケーター・プログラミング・モデルにマイグレーションする必要があります。
- JAAS CallbackHandler および JAAS Login Module は、ジェネレーター側でセキュリティー・トークンを作成し、コンシューマー側でセキュリティー・トークンを検証 (つまり、認証) します。
- セキュリティー・トークン・インターフェース com.ibm.websphere.wssecurity.wssapi.token.SecurityToken は、ID、XML フォーマット、および暗号鍵を取得するためのメソッドを持つセキュリティー・トークンを表します。
- トークン生成プログラム (com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent)
- トークン・コンシューマー (com.ibm.wsspi.wssecurity.token.TokenConsumerComponent)
- 鍵ロケーター (com.ibm.wsspi.wssecurity.keyinfo.KeyLocator)
任意の XML エレメントの署名または暗号化
XPath 式は、署名または暗号化する XML エレメントを選択するために使用されます。ただし、SOAP エンベロープ、SOAP ヘッダー、または Web Services Security ヘッダーを署名する場合は、 エンベロープ・シグニチャーが使用されます。 JAX-RPC Web サービスでは、XPath 式は、アプリケーション・デプロイメント記述子で指定されます。JAX-WS Web サービスでは、XPath 式は、ポリシー・セットの WS-Security ポリシーで指定されます。
JAX-WS プログラミング・モデルは、ポリシー・セットを使用して、セキュリティーを適用すべきメッセージ・パーツを示します。例えば、<Body> アサーションは、SOAP メッセージの本文が署名または暗号化されていることを示すために使用されます。もう 1 つの例は <Header> アサーションです。このアサーションでは、署名または暗号化される SOAP ヘッダーの QName が指定されます。
SOAP ヘッダーの署名または暗号化
OASIS Web Services Security (WS-Security) バージョン 1.1 サポートは、SOAP ヘッダーの暗号化と署名の標準的な方法を提供しています。SOAP メッセージに対して署名または暗号化を行うには、QName を指定して、SOAP メッセージの SOAP ヘッダー内のヘッダー・エレメントを選択します。
管理コンソールまたは Web Services Security API (WSS API) を使用して、署名または暗号化用のポリシー・セットを構成できます。 詳しくは、トピック『管理コンソールを使用したメッセージ・パーツの保護』を参照してください。
- 名前
- このオプションの属性は、保全性を保護する SOAP ヘッダーのローカル名を示します。 この属性が指定されていない場合、名前空間が Namespace 属性に一致するすべての SOAP ヘッダーが保護されます。
- 名前空間
- この必須属性は、保全性を保護する SOAP ヘッダーの名前空間を示します。
- 名前
- このオプションの属性は、機密性を保護する SOAP ヘッダーのローカル名を示します。 この属性が指定されていない場合、名前空間が Namespace 属性に一致するすべての SOAP ヘッダーが保護されます。
- 名前空間
- この必須属性は、機密性を保護する SOAP ヘッダーの名前空間を示します。
Web Services Security バージョン 1.0 の振る舞いでは、バインディング内の EncryptionInfo に含まれている com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.0 プロパティーに値として true を指定します。 このプロパティーを指定すると、<EncryptedData> エレメントになります。
Web Services Security バージョン 1.1 の振る舞いが WebSphere Application Server のバージョン 7.0 よりも前のバージョンと同じ場合は、バインディングの <encryptionInfo> エレメントで、値として true を持つ com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.1.pre.V7 プロパティーを指定します。このプロパティーを指定した場合、<EncryptedHeader> エレメントには、wsu:Id パラメーターが含まれ、<EncryptedData> エレメントでは Id パラメーターが省略されます。このプロパティーは、Basic Security Profile 1.1 への準拠が不要であり、かつ WebSphere Application Server バージョン 5.1 Feature Pack for Web Services を使用するクライアントまたはサーバーに <EncryptedHeader> エレメントを送信する必要がある場合にのみ使用してください。
LTPA のサポート
Lightweight Third Party Authentication (LTPA) は、 Web Services Security ではバイナリー・セキュリティー・トークンとしてサポートされています。 Web Services Security は、LTPA (バージョン 1) と LTPA バージョン 2 の両方のトークンをサポートします。LTPA バージョン 2 のトークンはバージョン 1 よりもセキュアであり、WebSphere Application Server バージョン 7.0 以降でサポートされています。
タイム・スタンプのサポートの拡張
署名処理の際に、 タイム・スタンプを Web Services Security ヘッダー以外の他のエレメントに挿入することができます。 このタイム・スタンプは、 エレメントに時間制限を追加するメカニズムを提供します。 このサポートは、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 は、デフォルトでは、受信した X.509 証明書をキャッシュに入れて、証明書パス検証を回避し、パフォーマンスを向上させます。ただし、この変更は、機密漏れを招く可能性があります。 ユーザーは、以下のステップを使用して X.509 証明書のキャッシングを使用 不可にすることができます。
- 「セキュリティー」>「Web サービス」とクリックします。
- 「追加プロパティー」の下で「プロパティー」>「新規」とクリックします。
- 「プロパティー名」フィールドに、 com.ibm.ws.wssecurity.config.token.certificate.useCache と入力します。
- 「プロパティー値」フィールドに、false と入力します。
- 「サーバー」>「アプリケーション・サーバー」> 「server_name」をクリックします。
- 「セキュリティー」の下の「Web サービス: Web Services Security のデフォルト・バインディング」をクリックします。
- 「追加プロパティー」の下で「プロパティー」>「新規」とクリックします。
- 「プロパティー名」フィールドに、 com.ibm.ws.wssecurity.config.token.certificate.useCache と入力します。
- 「プロパティー値」フィールドに、false と入力します。