WSS API を使用したメッセージ・レベルでの Web サービス・アプリケーションの保護
標準およびプロファイルは、Web サービス環境で交換されるメッセージの保護方法を規定します。Web Services Security は、メッセージ・レベルの標準です。この標準は、XML デジタル署名による SOAP メッセージの保護、XML 暗号化による機密性、およびセキュリティー・トークンを使用したクレデンシャル伝搬を基にしています。
始める前に
Web サービスを保護するには、アプリケーションとビジネス・トポロジーの範囲に渡る認証、許可、プライバシー、信頼、保全性、機密性、保護通信チャネル、代行、および監査を含めた、一連の広範囲なセキュリティー要件を検討する必要があります。今日のビジネス環境におけるセキュリティー・モデルの主な要件の 1 つとして、異種の環境において、 以前は非互換であったセキュリティー・テクノロジー間で相互運用を行う機能が必要とされています。 完全な Web Services Security プロトコル・スタックおよびテクノロジー・ロードマップは、Web サービスのロードマップに記載されています。
このタスクについて
Organization for the Advancement of Structured Information Standards (OASIS) Web Services Security: SOAP Message Security バージョン 1.1 仕様はすべての Web サービスに対する基本メッセージング・トランスポートです。SOAP 1.2 では拡張機能が既存の SOAP 1.1 の拡張機能に追加されているため、セキュア Web サービスをビルドすることができます。添付を SOAP メッセージに追加するには、SOAP with Attachments (SWA) プロファイルの代わりに、 Message Transmission Optimization Mechanism (MTOM) および XML-binary Optimized Packaging (XOP) を使用します。
OASIS Web Services Security (WS-Security) バージョン 1.1 仕様は、他の Web サービスおよびアプリケーション固有のプロトコルと一緒に使用されて、広範囲のセキュリティー・モデルに対応する、ビルディング・ブロックです。WebSphere® Application Server の Web Services Security は、OASIS Web Services Security バージョン 1.1 仕様およびプロファイルに含まれている特定の標準に基づいています。
バージョン 1.1 仕様は、メッセージの保全性と機密性を保護するための追加機能を定義しています。 バージョン 1.1 仕様は、セキュリティー関連の要求をメッセージと関連付けるためのメカニズムも提供します。 WebSphere Application Server がサポートする Web Services Security バージョン 1.1 標準には、 署名確認、暗号化ヘッダー・エレメント、ユーザー名トークン・プロファイル、および X.509 トークン・プロファイルが含まれています。ユーザー名トークン・プロファイルと X.509 トークン・プロファイルは、 バージョン 1.1 プロファイルとして更新されました。 X.509 証明書トークン・プロファイルの場合は、新しいタイプのセキュリティー・トークン参照である指紋参照があり、これはバインディングで指定されます。
XML スキーマのパート 1 とパート 2 は、仕様書であり、XML 文書にスキーマを編成する方法について説明しています。 WS-Security バージョン 1.0 の 2 つのスキーマは バージョン 1.1 仕様に更新され、さらに新しい バージョン 1.1 スキーマが追加されました。 バージョン 1.1 スキーマはバージョン 1.0 スキーマに置き換わるものではなく、バージョン 1.1 名前空間内に追加の機能セットを定義することにより、バージョン 1.0 スキーマ上に構築されます。
- 管理コンソールを使用して、ポリシー・セットを構成します。
このメソッドは、ポリシー・セットに定義されているブートストラップ・ポリシーを使用します。 ポリシー・セットか、またはサービスの定義方法に関するアサーションを使用して、Web サービスのセキュリティー構成を簡素化します。管理コンソールを使用してカスタム・ポリシー・セットを作成、変更、および削除することができます。 一連のデフォルト・ポリシー・セットが使用可能です。
例えば、ブートストラップ・ポリシーをポリシー・セットに定義して、 Web Services Trust (WS-Trust) SOAP メッセージを保護することができます。
また、管理コンソールを使用して、ポリシー・セット管理タスクを実行し、暗号化、署名情報、およびセキュリティー・トークンを使用する Web サービスを保護することができます。
以下のハイレベル・ステップでは、 管理コンソールで WS-Security を使用して、SOAP メッセージを保護するために、 WebSphere Application Server を構成する方法を記述しています。 以下のステップで説明する生成プログラム・タスクとコンシューマー・タスクは、 WS-Security バージョン 1.0 と 1.1 を使用します。- アプリケーションのポリシー・セット、またはトラスト・サービスのシステム・ポリシー・セットを作成および構成します。
- ポリシー・セットを作成および構成する際に、SOAP メッセージを保護するために使用するポリシー・タイプを定義します。
- ポリシー・セット・バインディングを構成します。 対称または非対称のいずれかのバインディング・アサーションを選択して、 メッセージの保護に使用するトークン・タイプとアルゴリズムを記述します。
- アセンブリー・ツールを使用して、Web Services Security を使用可能にしたアプリケーションをアセンブルします。
- Web Services Security API (WSS API) を使用して、SOAP メッセージ・コンテキストを構成します (クライアントのみ)
WebSphere Application Server は、新規の API プログラミング・モデルを使用します。既存の JAX-RPC プログラミング・モデルに加えて、新規プログラミング・モデル、 Java™ API for XML Web Services (JAX-WS) が追加されました。 JAX-WS プログラミング標準は、文書中心のメッセージング・モデルに対応しており、Java API for XML-based RPC (JAX-RPC) 仕様で定義されたリモート・プロシージャー・コールのプログラミング・モデルを置き換えます。
例えば、アプリケーションは、システム・ポリシー・セットを作成し、次に WebSphere Application Server WSS API を使用して、プログラマチック API ベースの Web Services Secure Conversation (WS-SecureConversation) 向けセキュリティー・コンテキスト・トークンを取得します。
また、管理コンソールを使用して、WSS API が Web サービスを保護するために実行する、暗号化タスク、署名タスク、およびトークン構成タスクを実行することもできます。
以下のハイレベル・ステップでは、 WSS API を用いて WS-Security を使用し、SOAP メッセージを保護するために、 WebSphere Application Server を構成する方法を記述しています。 以下のステップで説明する生成プログラム・タスクとコンシューマー・タスクは、 WS-Security バージョン 1.0 と 1.1 を使用します。
- WSSSignature API を使用して、要求生成プログラム (クライアント・サイド) バインディングの署名情報を構成します。
生成プログラム側の 要求のメッセージ保護には、さまざまなメッセージ・パーツを 指定できます。デフォルトの必須パーツは、 BODY、ADDRESSING_HEADERS、および TIMESTAMP です。
WSSSignature API では、メッセージ保護用のシグニチャーで使用される 各種のアルゴリズム方式も指定されます。デフォルトのシグニチャー方式は RSA_SHA1 です。デフォルトの正規化方式は EXC_C14N です。
- ダイジェスト方式と変換方式を変更する場合は、WSSSignPart API を使用します。
デフォルトの署名済みパーツは、WSSSignature.BODY、WSSSignature.ADDRESSING_HEADERS、 および WSSSignature.TIMESTAMP です。
WSSSignPart API では、署名済みパーツを追加または変更した場合に使用される 各種のアルゴリズム方式も指定されます。デフォルトのダイジェスト方式は SHA1 です。デフォルトの変換方式は TRANSFORM_EXC_C14N です。 例えば、デフォルト値の SHA1 の代わりに SHA256 のダイジェスト方式を使用して SOAP メッセージのシグニチャーを生成する場合は、WSSSignPart API を使用します。
- WSSEncryption API を使用して、要求生成プログラム・サイドに暗号化情報を構成します。
生成プログラム側の暗号化情報は、要求生成プログラム (クライアント・サイド) バインディングの 発信 SOAP メッセージを暗号化するために使用されます。 暗号化のデフォルト・ターゲットは、 BODY_CONTENT と SIGNATURE です。
WSSEncryption API では、 メッセージの機密性保護に使用される各種のアルゴリズム方式も 指定されます。デフォルトのデータ暗号化方式は AES128 です。デフォルトの鍵暗号化方式は KW_RSA_OAEP です。
- 変換方式のみを設定する場合は、WSSEncryptPart API を使用します。
例えば、データ暗号化方式をデフォルト値の AES128 から TRIPLE_DES へ変更する場合です。
暗号化されたパーツでは、 アルゴリズム方式は不要です。
- WSS API を使用して、生成プログラム・サイドにトークンを構成します。
セキュリティー・トークンの要件はトークン・タイプによって異なります。JAAS ログイン・モジュールと JAAS CallbackHandler は、生成プログラム側でセキュリティー・トークンを作成します。さまざまなスタンドアロン・トークンを要求および応答で送信できます。デフォルト・トークンは X509Token です。署名に使用できる他のトークンは、 DerivedKeyToken です。これは Web Services Secure Conversation (WS-SecureConversation) でのみ使用できます。
- WSSVerification API を使用して、応答コンシューマー (クライアント・サイド) バインディングのシグニチャーを検査します。
コンシューマー側の応答のメッセージ保護には、さまざまなメッセージ・パーツを 指定できます。検証用の必須ターゲットは、BODY、ADDRESSING_HEADERS、および TIMESTAMP です。
WSSVerification API では、 シグニチャーの検証やメッセージ保護に使用される各種のアルゴリズム方式も 指定されます。デフォルトのシグニチャー方式は RSA_SHA1 です。デフォルトの正規化方式は EXC_C14N です。
- WSSVerifyPart API を使用してダイジェスト方式と変換方式を変更します。
必須の検証パーツは、WSSVerification.BODY、WSSVerification.ADDRESSING_HEADERS、
および WSSVerification.TIMESTAMP です。
WSSVerifyPart API では、 検証パーツを追加または変更した場合に使用される各種のアルゴリズム方式も 指定します。デフォルトのダイジェスト方式は SHA1 です。デフォルトの 変換方式は TRANSFORM_EXC_C14N です。
- WSSDecryption API を使用して、応答コンシューマー (クライアント・サイド) バインディングの暗号化解除情報を構成します。
コンシューマー側の暗号化解除情報は、 着信 SOAP メッセージの暗号化解除に使用されます。暗号化解除のターゲットは、BODY_CONTENT と SIGNATURE です。デフォルトの鍵暗号化方式は KW_RSA_OAEP です。
暗号化解除では、 アルゴリズム方式は不要です。
- 変換方式のみを設定する場合は、WSSDecryptPart API を使用します。
例えば、データ暗号化方式をデフォルト値の AES128 から TRIPLE_DES へ変更する場合です。
暗号化解除されたパーツには、 アルゴリズム方式は不要です。
- WSS API を使用して、コンシューマー・サイドにトークンを構成します。
セキュリティー・トークンの要件はトークン・タイプによって異なります。 JAAS ログイン・モジュールと JAAS CallbackHandler は、コンシューマー側で セキュリティー・トークンを検証 (認証) する場合に使用します。さまざまなスタンドアロン・トークンを要求または応答で送信できます。
WSS API は、暗号化解除に使用される トークン候補の情報を追加します。デフォルト・トークンは X509Token です。
- WSSSignature API を使用して、要求生成プログラム (クライアント・サイド) バインディングの署名情報を構成します。
- wsadmin 管理スクリプト・ツールを使用してポリシー・セットを構成します。
このメソッドを使用することにより、コマンド行からポリシー・セットの作成、管理、および削除を行うことができます。あるいは、スクリプトを作成してタスクを自動化することができます。 wsadmin ツールと、 PolicySetManagement コマンド・グループを使用して、デフォルトのポリシー・セットの管理、カスタム・ポリシー・セットの作成、ポリシーの構成、および添付とバインディングの管理を行うことができます。 詳しくは、インフォメーション・センターのポリシー・セット・スクリプトのトピックを参照してください。
WebSphere Application Server で Web サービスを保護するには、ジェネレーターとコンシューマーのセキュリティー制約を構成する必要があります。いくつかの異なる構成を指定する必要があります。 これらの異なる構成を指定する特定の順序はありませんが、 一部の構成は他の構成を参照します。 例えば、暗号化解除構成は、暗号化構成を参照します。
タスクの結果
WebSphere Application Server のこれらのハイレベル・ステップを完了すると、ポリシー・セットを構成することにより、また、WSS API を使用して、暗号化と暗号化解除、シグニチャーとシグニチャー検査情報、およびコンシューマー・トークンと生成プログラム・トークンを構成することにより、Web サービスが保護されます。