SOAPUI创建通用id而不是wsu id

时间:2015-10-23 21:05:54

标签: xml soap soapui signature

我正在尝试发送已签名的肥皂请求。我的要求有签名,身体一切都很好。但肥皂身体标签是指签名为

<ds:Signature>
 ..
  <ds:reference URI="#id-asdfas123e"></ds:reference>
</ds:Signature>
...
<soapenv:body wsu:id="id-asdfas123e" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

IdResolver代码正在寻找id或ID或Id作为属性,但IdResolver代码收到的是wsu:id,它不会与属性匹配。因此最终它失败了ResourceResolverException。在SoapUI中是否有一种方法可以生成ID属性,因为id =“id-asdfas123e”而不是wsu:id =“...”
我在oracle网站上看到了这两个选项可供选择在SoapUI中有一些类似的方法吗? Oracle链接:http://docs.oracle.com/cd/E27515_01/common/tutorials/common_what_must_be_signed.html

1 个答案:

答案 0 :(得分:1)

这个xml片段:

<soapenv:body wsu:id="id-asdfas123e" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

而且:

<soapenv:body id="id-asdfas123e" xmlns:="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

完全等效,区别在于第一个使用名称空间前缀,第二个使用名称空间作为http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd的默认名称。

因此,我认为这里失败的是IdResolver,因为如果它在没有检查命名空间的情况下查找id属性就没有很好地实现...

尽管如此,我认为没有办法告诉SOAPUI使用或没有WSS安全元素的名称空间前缀,所以你唯一能做的就是(如果它无法纠正IdResolver)是从名称空间定义和SOAPUI中的id属性中删除wsu前缀,手动或尝试使用groovy脚本。

希望它有所帮助,