0

Delphi 7 のHTTPReqRespコンポーネントを使用して、デジタル署名された SOAP XML ドキュメントを HTTPS Web サービスに送信しています。私は Eldos XML BlackBox を使用しtransformAlgorithmsCanonicalizationMethodsignaturemethod、 などをすべて Web サービスが必要とするものに設定し、技術サポート担当者に確認しました。

XML BlackBox とこのXML Verifier Web サイトを使用して署名を検証しました。

どちらの方法でも、署名が正しいことを確認できます。ただし、XML ドキュメントを 経由HTTPReqResp.executeで送信すると、返される応答はBadSignature (The signature value is invalid).

当初、XML エラー (不正な形式など) が原因で、別のエラー メッセージが返されました。サービスは最初にすべての標準フォーマット チェックを実行し、次に署名の検証を試みるようです。応答が返ってきたのでBadSignature、残りの XML は正しいはずです。

ここで2つの質問があると思います。

  1. HTTPReqResp コンポーネントは XML を変更しますか。

  2. Web サービスが XML を変更する可能性はありますか。

サイトは Access Manager WebSEAL を使用しています。

4

1 に答える 1

0

受信側のパートナーが何らかの形で変更されたドキュメントを取得している可能性が非常に高くなります。いくつかのマイナーな変更は署名に影響を与えるべきではありません (少なくともそれはアイデアです) ので、次の点を確認することをお勧めします。

  1. 受信パートナーが使用する「推奨」エンコーディング。一部の受信パートナーによる非常に迷惑な慣行は、1 つの形式のエンコードを優先し、他の形式を完全に無視することです。XML署名を使用する必要utf-8がありますが、受け入れるだけのサーバーを見てきましたiso-8859-1

  2. 署名後にエンコーディングを誤って変更しないようにしてください。

  3. 受信パートナーが適切な正規化方法を使用していることを確認してください。

  4. 文書に余分な要素が追加されていないことを受信パートナーに確認してください。

また、SecureBlackBox コンポーネントを使用してこれを投稿しようとしましたか? また、SSL を実行できる HTTP クライアントもあり、ネットワーク経由で送信されるバイトの検証にも使用できます。

于 2013-03-07T21:40:21.963 に答える