ジェネレーターのセキュリティー制約を要求ジェネレーターまたは応答ジェネレーターに対して構成するときに、
キーワードを使用して機密性を得るための nonce を指定できます。
要求ジェネレーターはクライアント用に構成され、
応答ジェネレーターはサーバー用に構成されます。
このタスクについて
メッセージ内の特定のエレメントに nonce を組み込み、
そのエレメントを暗号化するよう指定する場合は、機密性を得るための nonce を使用します。
nonce はランダムに生成される暗号トークンです。
特定のメッセージ・パーツに nonce を追加すると、
メッセージの盗み見やリプレイ・アタックを防ぐことができます。これは、生成される nonce が固有のものであるためです。
例えば、nonce を使用しないと、
非セキュア・トランスポート (HTTP など) を使用してユーザー名トークンがマシン間で受け渡される場合に、
トークンが傍受されて、リプレイ・アタックで使用されることがあります。
ユーザー名トークンは、XML デジタル・シグニチャーと XML 暗号化を使用している場合であっても、
盗まれる可能性があります。このような状況は、nonce を追加することで防止できます。
以下のステップを実行します。ステップ 2 でのクライアント・サイドの拡張機能、またはステップ 3 でのサーバー・サイドの拡張機能の構成を行う必要があります。
プロシージャー
- アセンブリー・ツールを開始します。
- Java 2 Platform, Enterprise Edition (J2EE) パースペクティブへ切り替えます。
「ウィンドウ」>「パースペクティブのオープン」>「J2EE」とクリックします。
- オプション: プロジェクト・エクスプローラー・ウィンドウで、
クライアント・サイドの拡張機能を探します。
「Client Deployment Descriptor」ウィンドウが表示されます。
この Web サービスに、構成が必要な拡張機能が含まれています。
以下のステップを実行して、クライアント・サイドの拡張機能を見付けます。
- 「Web サービス」>「クライアント」とセクションを展開し、
Web サービスの名前をダブルクリックします。
- 「WS Extension」タブをクリックして、
「Request Generator Configuration」セクションを展開します。
- オプション: 「Project Explorer」ウィンドウを使用して、サーバー・サイドの拡張機能を見付けます。
「Web Services Editor」ウィンドウが表示されます。
この Web サービスに、構成が必要な拡張機能が含まれています。
以下のステップを実行して、サーバー・サイドの拡張機能を見付けます。
- 「Web サービス」>「サービス」とセクションを展開し、
Web サービスの名前をダブルクリックします。
- 「拡張機能」タブをクリックして、
「Response Generator Service Configuration Details」セクションを展開します。
- 「機密性」セクションを展開します。 機密性は暗号化に関連し、保全性はデジタル署名に関連します。
機密性は、ネットワーク内を通過するメッセージが傍受されるリスクを軽減します。機密性仕様により、
メッセージは送信前に暗号化され、正当な宛先で受信されると暗号化解除されます。
暗号化について詳しくは、
XML 暗号化
を参照してください。
- 「追加」をクリックして、保全性を得るための nonce を指定します。
「機密性」ダイアログ・ウィンドウが表示されます。
以下のステップを実行し、構成を指定します。
- 「Confidentiality Name」フィールドで、
機密性エレメントの名前を指定します。 例えば、conf_nonce などです。
- 「順序」フィールドで順序を指定します。 この値は正の整数値で、
暗号化の処理順序を指定するものです。
順序値 1 を指定すると、その暗号化が最初に実行されます。
- 「Nonce」の下にある「追加」をクリックして、nonce ダイアレクトを選択します。
http://www.ibm.com/websphere/webservices/wssecurity/dialect-was ダイアレクトで、
nonce が追加され、暗号化されるメッセージ・パーツが指定されます。
このダイアレクトを選択した場合は、
「Nonce keyword」の下にある以下のキーワードのいずれかを選択することができます。
- bodycontent
- メッセージのユーザー・データ部分を指定します。
このキーワードを選択すると、
Simple Object Access Protocol (SOAP) メッセージの本文に nonce が組み込まれ、その本文が暗号化されます。
- usernametoken
- ユーザー名やパスワードなどの基本認証情報を含むユーザー名トークンを指定します。
通常、ユーザー名トークンを暗号化するのは、ユーザー情報を保護するためです。
このキーワードを選択すると、nonce エレメントがユーザー名トークン・エレメントに組み込まれ、暗号化されます。
- digestvalue
- 固有のダイジェスト値を指定します。
SOAP メッセージの一部に署名がある場合は、
固有のダイジェスト値が作成されるため、受信関係者はその値を使用してメッセージの保全性を検査します。
digestvalue エレメントを暗号化して、ダイジェスト値を保護することができます。このキーワードを選択すると、digestvalue エレメントに nonce が組み込まれ、そのエレメントが暗号化されます。
- 「メッセージ・パーツ」セクションで「追加」をクリックして、
「Message parts dialect」フィールドで http://www.ibm.com/websphere/webservices/wssecurity/dialect-was を選択します。
- 「メッセージ・パーツ」セクションで、メッセージ・パーツのキーワードを選択します。
重要: 機密性を得るために nonce を指定するには、
「メッセージ・パーツ」セクションで少なくとも 1 つのメッセージ・パーツを定義しておく必要があります。
メッセージ・パーツを選択すると、nonce の親エレメントに加えてそのメッセージ・パーツも暗号化されます。
- 「OK」をクリックして、構成変更を保管します。
注: 以上の構成は、ジェネレーターとコンシューマーで一致している必要があります。
nonce のほか、タイム・スタンプ・エレメントを暗号化するように指定することもできます。
詳しくは、以下の項目を参照してください。
例
次の例は、bodycontent エレメントに nonce が挿入されている SOAP メッセージの一部で、
bodycontent キーワードと http://www.ibm.com/websphere/webservices/wssecurity/dialect-was ダイアレクトによって暗号化されています。
重要: メッセージは暗号化されているため、メッセージ内の nonce を確認することはできません。
<soapenv:Body soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<EncryptedData Id="wssecurity_encryption_id_1669600751905274321"
Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/
04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<CipherData>
<CipherValue>pZpVL6Rs6zhvu8UrC7TH3BA2zvOdpPpLeHnwH0dCpmdc7ETz1tUHDdXLFxy143
nYu91MxpzspWt1rWx2Lx9vFGRIfblRSX5lEpV8+0LvezvhJYY/cbTA04mTMUzCfv28v2TI09AZ
Q4TjII4u+cPeh5f0prBVK1E5hLTql4QMcwf/rq9h+tttrJbR7ub3AUgIVo42ucQs5HZbaDijxm
dSuFboBql4lv1Ep24ZfeoB/p7aHzyeWy7pYtO0bshpks/oBwO/78vxSklVJKu4sUseFvZa+B7s
ciFneeNnNuRCqB2JXc/vtH83l3AELUZg60ehd4vqvXkyuvSLohZ/kKnF/A5c+BP5Bo1pgvwmDE
eJItQ5a7LOKkTavLuc2WGtVo1947fnNGm2TN4C6U/cp9ERT7jAB9Lr/1v/8ZqPZYmssyME4pGe
SWLy232WrPvk6HEu96GHfRt+YXWpVNvSEt/gZw==</CipherValue>
</CipherData>
</EncryptedData>
</soapenv:Body>