使用Apache Axis2和Rampart对所有标头进行签名,包括Elements ReplyTo,To,MessageId和Action

时间:2013-12-16 10:37:58

标签: axis2 ws-security rampart ws-addressing

我需要在soap消息中签署WS-Addressing元素。是否可以使用apache axis2 ws-addresing和rampart?

我找到了这个例子 - sample2 http://axis.apache.org/axis2/java/rampart/samples.html。但是ws-addressing元素没有签名。

修改!!!

这是我的Policy文件中的定义。它不起作用!

<wsp:Policy wsu:Id="DefaultEndpoint_Echo_output_policy">
<wsp:ExactlyOne>
  <wsp:All>
    <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
      <sp:Body/>
      <sp:Header Name="To" Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
      <sp:Header Name="From" Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
      <sp:Header Name="FaultTo" Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
      <sp:Header Name="ReplyTo" Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
      <sp:Header Name="MessageID" Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
      <sp:Header Name="RelatesTo" Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
      <sp:Header Name="Action" Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    </sp:SignedParts>
  </wsp:All>
</wsp:ExactlyOne>

1 个答案:

答案 0 :(得分:0)

我通过从SignedParts标记中删除所有子标记

解决了这个问题

所以我的政策定义是这样的。

<wsp:ExactlyOne>
  <wsp:All>
    <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy</sp:SignedParts>
  </wsp:All>
</wsp:ExactlyOne>

我发现只要您没有定义任何用于签名的标签,并且您只包含空标签SignedParts,它就会自动签署所有标题和正文。