Web サービス・セキュリティーのシグニチャーの確認は、拡張された XML デジタル署名であり、Web サービス・セキュリティー標準に含まれています。
XML デジタル署名は、SOAP エンベロープのエレメントの署名に使用されます。
OASIS SOAP メッセージのセキュリティー仕様の拡張機能の 1 つとして、シグニチャーの確認エレメントは、要求メッセージに含まれる署名を確認するために応答メッセージ内に必要な各種エレメントを取り込みます。
XML デジタル署名およびシグニチャーの確認により、よりセキュアなメッセージ・レベルのセキュリティーを提供できます。
SOAP メッセージのセキュリティー用の Web サービス・セキュリティー・バージョン 1.0 では、この応答を促す要求の相互理解を確認する方法について、何のガイダンスも提供されていませんでした。SignatureConfirmation すなわち <wsse11:SignatureConfirmation>
エレメントが Web サービス・セキュリティー・バージョン 1.1 仕様に追加されました。
<wsse11:SignatureConfirmation> エレメントは、その署名が意図した受信者により処理されることを保証し、応答者が要求内の署名を処理したことを表示します。
このシグニチャーの確認エレメントは、更新された Web サービス・セキュリティー標準の一部であり、Microsoft .NET および DataPower など、バージョン 1.1 標準をサポートする他のベンダーとのインターオペラビリティーを可能にします。
Web サービスの性質はステートレスであり、メッセージ交換パターン (MEP) にはさまざまな形式があるので、次の前提条件を検討してください。
- WebSphere Application Server で実行されているクライアントに対して、クラスターが使用可能になっている場合は、セッション・アフィニティーが使用可能であるとします。
セッション・アフィニティーが使用可能な場合、応答がサーバーの開始クライアントに返信されることを意味します。
- 非同期メッセージ交換パターンとして WS-Addressing が使用可能であるとします。
WS-Addressing が使用可能である場合、ランタイムは応答を要求に関連付けることができます。
非同期応答は開始側の WebSphere Application Server のアプリケーションに返送されます。
構文
SignatureConfirmation エレメントは、応答側が要求内の署名を処理したことを示します。
このエレメントが応答内に表示されていない場合は、イニシエーターは応答側が対応していないと解釈します。
このシグニチャーの確認エレメントの形式は以下のとおりです。
<wsse11:SignatureConfirmation wsu:Id="…" Value="…" />
各部の意味は、次のとおりです。
- wsu:Id
- 関連した応答メッセージの署名の <ds:SignedInfo>
参照リスト内で、このエレメントを参照する場合に使用される ID です。この属性は必須なので、はっきりした参照がこの <wsse11:SignatureConfirmation> エレメントについて行われます。
- Value
- この属性はオプションであり、関連した要求からコピーされた <ds:SignatureValue> のコンテンツが含まれています。
要求が未署名な場合、この属性は存在してはなりません。
この属性が値を持たない (空) で指定された場合、イニシエーターはこれを不正な振る舞いであると解釈し、そのように処理します。
この属性がない場合は、イニシエーターはこれを応答が署名されなかった要求に基づいていると解釈します。
構成
シグニチャーの確認を構成するには、管理コンソールを使用してポリシー・ファイルを構成し、「シグニチャーの確認が必要 (Require
signature confirmation)」を選択します。シグニチャーの確認を正しく処理するには、要求のイニシエーターが、応答ジェネレーターの処理中に署名を保存し、後で確認チェックのために署名を取り出す必要があります。
応答の生成規則
応答が特定の要求と関連していることを確認するには、SOAP 応答側用の追加の SOAP セキュリティー・エレメントを使用します。
応答側は要求の署名の <ds:SignatureValue> エレメントの内容を、<wsse11:SignatureConfirmation> エレメントの @Value 属性の値として含んでいる必要があります。
SignatureConfirmation ポリシー・アサーションを使用する場合には、以下の応答の生成規則が適用されます。
- 要求に署名がない場合は、値を持たない 1 つの SignatureConfirmation エレメントが応答に含まれます。
複数の要求 (すべて署名なし) と 1 つの応答がある場合の MEP では、値を持たない 1 つの SignatureConfirmation エレメントが応答に含まれます。
- 要求に署名がある場合は、各署名について応答に SignatureConfirmation が含まれ、その値は要求の署名の値と一致します。
少なくとも 1 つの要求に署名が含まれている、複数の要求がある MEP では、要求にある各署名について、応答に SignatureConfirmation エレメントが含まれ、その値は要求の署名の値と一致します。
- 1 つの要求と複数の応答のある MEP の場合、各応答には最初の黒丸と 2 番目の黒丸で注意書きされた、該当する SignatureConfirmation エレメントが含まれます。
- SOAP 要求に複数の署名が含まれている場合、要求側は応答に含まれているすべてのシグニチャーの確認エレメントを検出し、オリジナルの SOAP 要求の署名の値に対して、シグニチャーの確認エレメントの値フィールドの値を照合します。