1

proxyWSO2 から ESB を使用して Web サービスを構築しようとしています。私のサービスはデータサービスを使用してデータベースからデータを取得するため、esb を dss に接続する必要があります。プロキシとデータサービスがセキュリティで保護されていない場合は問題なく動作しますが、セキュリティで保護されている場合は次のエラーが発生します

  <soapenv:Fault xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
     <faultcode>wsse:InvalidSecurity</faultcode>
     <faultstring>Nonce value : 8/BKMsFNs2gTJ58FXyV43Q==, already seen before for user name : UsuarioPrueba1. Possibly this could be a replay attack.</faultstring>
     <detail/>
  </soapenv:Fault>

データサービスをセキュリティで保護しますが、その作業をプロキシしません。ESB と DSS からユーザーとロールで作成されたユーザー名トークンとパスワードを送信します

4

1 に答える 1

1

このエラーが発生する可能性のあるシナリオの 1 つは、ヘッダー メディエーターを使用してカスタム SOAP セキュリティ ヘッダーを送信している場合です。

たとえば、[1] のようにプロキシを作成し、soap メッセージのセキュリティ ヘッダーに次の要素を入れたことに気付くかもしれません。

<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">95euUDNp5wT7nT3BadS9Tw==</wsse:Nonce> 

毎回同じナンスをバックエンドに送信しているため、バックエンドによってリプレイ攻撃の可能性として検出されます。

このエラーを取り除くために、上記の「Nonce」要素を削除します。その後、バックエンドはエラーの発生を停止しました

「ノンス値: 95euUDNp5wT7nT3BadS9Tw==、ユーザー名: admin については以前に確認済みです。おそらく、これはリプレイ攻撃である可能性があります。」

もう。

Soap セキュリティ ヘッダーで「Nonce」要素を送信した場合にのみ、バックエンドはリプレイ攻撃の可能性をチェックします。したがって、その要素を削除することは、エラーを取り除く 1 つの方法です。

これは、リプレイ アタックを検出するためにバックエンドで Nonce 値を評価したくない場合にのみ、これが解決策であることも意味します。

この質問は 1 年前のものです。しかし、参考として回答を追加することを考えました。

[1]

    <?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="InsuranceServiceProxy2"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <header scope="default">
            <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
                           xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                           xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
                           soapenv:mustUnderstand="1">
               <wsu:Timestamp wsu:Id="TS-23">
                  <wsu:Created>2015-06-13T03:07:55Z</wsu:Created>
               </wsu:Timestamp>
               <wsse:UsernameToken wsu:Id="UsernameToken-22">
                  <wsse:Username>admin</wsse:Username>
                  <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">admin</wsse:Password>
                  <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">95euUDNp5wT7nT3BadS9Tw==</wsse:Nonce>
                  <wsu:Created>2015-06-13T03:07:55.091Z</wsu:Created>
               </wsse:UsernameToken>
            </wsse:Security>
         </header>
         <property name="Authorization"
                   value="Basic YWRtaW46YWRtaW4="
                   scope="transport"
                   type="STRING"/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <endpoint>
         <address uri="https://localhost:8243/services/InsuranceServiceBEProxy2"/>
      </endpoint>
   </target>
   <description/>
</proxy>
于 2015-06-13T15:26:53.863 に答える