特定のエレメントにタイム・スタンプを埋め込み、
そのエレメントを暗号化するよう指定することができます。
このタスクについて
以下のステップに従って、
ジェネレーターのセキュリティー制約を要求ジェネレーターまたは応答ジェネレーター用に構成するときに、
キーワードを使用して機密性用のタイム・スタンプを指定します。
要求ジェネレーターはクライアント用に構成され、
応答ジェネレーターはサーバー用に構成されます。
以下のステップでは、
ステップ 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 暗号化
を参照してください。
- 機密性を得るためのタイム・スタンプを指定するには、「追加」をクリックします。
「機密性」ダイアログ・ウィンドウが表示されます。
以下のステップに従って、
機密性の構成を指定します。
- 「Confidentiality
Name」フィールドで機密性エレメントの名前を指定します。 例えば、conf_tmstmp と指定できます。
- 「順序」フィールドで順序を指定します。 この値は正の整数値で、
暗号化の処理順序を指定するものです。
順序値 1 を指定すると、その暗号化が最初に実行されます。
- 「タイム・スタンプ」セクションで、
「追加」をクリックしてタイム・スタンプ・ダイアレクトを選択します。 http://www.ibm.com/websphere/webservices/wssecurity/dialect-was ダイアレクトで、
キーワードを使用して暗号化するメッセージ・パーツが指定されます。
このダイアレクトを選択した場合は、
「Timestamp keyword」という見出しの下にある以下のキーワードのいずれかを選択することができます。
- bodycontent
- メッセージのユーザー・データ部分を指定します。
このキーワードを選択すると、SOAP メッセージの本文にタイム・スタンプが埋め込まれ、
その本文が暗号化されます。
- usernametoken
- ユーザー名やパスワードなどの基本認証情報を含むユーザー名トークンを指定します。
通常、ユーザー名トークンを暗号化するのは、ユーザー情報を保護するためです。
このキーワードを選択すると、タイム・スタンプ・エレメントがユーザー名トークン・エレメントに埋め込まれ、
暗号化されます。
- digestvalue
- 固有のダイジェスト値を指定します。
SOAP メッセージの一部に署名がある場合は、
固有のダイジェスト値が作成されるため、受信関係者はその値を使用してメッセージの保全性を検査します。
digestvalue エレメントを暗号化して、ダイジェスト値を保護することができます。このキーワードを選択すると、
digestvalue エレメントにタイム・スタンプが埋め込まれ、そのエレメントが暗号化されます。
- 「Timestamp expires」フィールドで、
タイム・スタンプの有効期限を指定します。 タイム・スタンプはリプレイ・アタック対策として有効です。
期間の字句表記は、[ISO 8601] 拡張フォーマット PnYnMnDTnHnMnS です。各部分の意味は以下のとおりです。
- P
- 日時の値の前に置きます。
- nY
- タイム・スタンプが有効な年数を表します。
0 から 99 年までの値を選択します。
- nM
- タイム・スタンプが有効な月数を表します。
0 から 11 カ月までの値を選択します。
- nD
- タイム・スタンプが有効な日数を表します。
0 から 30 日までの値を選択します。
- T
- 日時の値を分割します。
- nH
- タイム・スタンプが有効な時間数を表します。
0 から 23 時間までの値を選択します。
- nM
- タイム・スタンプが有効な分数を表します。
0 から 59 分までの値を選択します。
- nS
- タイム・スタンプが有効な秒数を表します。
秒数には、任意の 10 進数を組み込むことができます。
秒数に 0 から 59 までの値と、10 分の 1 秒の単位で 0 から 9 までの値を選択することができます。
例えば、1 年、2 カ月、3 日、10 時間、および 30 分は P1Y2M3DT10H30M と表されます。
通常、メッセージ・タイム・スタンプは、10 分から 30 分の間で構成することができます。
例えば、10 分は P0Y0M0DT0H10M0S と表されます。
- 「メッセージ・パーツ」セクションで「追加」をクリックして、「Message parts dialect」フィールドで http://www.ibm.com/websphere/webservices/wssecurity/dialect-was を選択します。
- 「メッセージ・パーツ」セクションで、メッセージ・パーツのキーワードを選択します。
重要: 機密性用のタイム・スタンプを指定するには、
「メッセージ・パーツ」セクションで少なくとも 1 つのメッセージ・パーツを定義しておく必要があります。メッセージ・パーツを選択すると、
タイム・スタンプの親エレメントに加えてそのメッセージ・パーツも暗号化されます。
- 「OK」をクリックして、構成変更を保管します。
注: 以上の構成は、
コンシューマー用とジェネレーター用で一致している必要があります。
タイム・スタンプだけではなく、
nonce (ランダム・ストリング) にも署名するように指定することもできます。
詳しくは、以下の項目を参照してください。
例
次の例は、bodycontent エレメントにタイム・スタンプが挿入されている SOAP メッセージのパーツで、
bodycontent キーワードと http://www.ibm.com/websphere/webservices/wssecurity/dialect-was ダイアレクトによって暗号化されています。
重要: メッセージは暗号化されているため、
メッセージ内のタイム・スタンプを確認することはできません。
<soapenv:Body soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<EncryptedData Id="wssecurity_encryption_id_4349704672508984224" 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>IxSuTmF1vAygF/SBLCd8bgu8opPiwHmroIBLzZbENGr9JpxhSFt/0fV0sF
un0uxg/h/Y+1erE+NaysREuL+E9AQm0lxALNEdBX9zpeVf+ZffUCSzZfXXe9iosQlPe9jG
7yTp+rhZGdp/KOp26c3DZXCNDr0Wgz31wn3KNm6bGO6RmBzahEOSW8d0wR999DeqSpOY12
d8iWJa3HZ8gnGnineCiZ3wrHy9rOC58iijcsNv1fP3lExuA5WkHra6rndhbi8P7jDMhkzf
4Odj2yy1M3XURWalOLNYhNJ9YaWACsaYCY2ukcKtzw==</CipherValue>
</CipherData>
</EncryptedData>
</soapenv:Body>