WSO2 SECURITY USERNAMETOKEN ESB和DSS

时间:2014-06-10 08:22:46

标签: security proxy wso2 esb dss

proxyI尝试使用WSO2中的ESB构建Web服务。我的服务使用dataservice从数据库中获取数据,因此我需要将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

1 个答案:

答案 0 :(得分: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> 

由于我每次都向被跟踪者发送相同的随机数,因此被后端检测为可能的重播攻击。

为了摆脱这个错误,我删除了上面的&#39; Nonce&#39;元件。然后后端停止给出错误

  

&#34; Nonce值:95euUDNp5wT7nT3BadS9Tw ==,已经见过用户   名称:admin。可能这可能是一次重播攻击。&#34;

了。

只有当我们发送&#39; Nonce&#39;在Soap安全头中的元素,后端将检查可能的重放攻击。因此删除该元素是摆脱错误的一种方法。

这也意味着,只有当您不希望后端评估Nonce值以检测重放攻击时,这才是解决方案。

我知道这个问题已经有一年了;但想加上一个答案作为参考。

[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>