通过Web服务和使用WS-Security发送二进制数据

时间:2009-08-12 08:48:57

标签: web-services binary digital-signature ws-security

我们必须使用Web服务堆栈传输二进制数据,并且在此过程中我们必须签署Web服务请求/响应。

主要问题是:首选方法是什么?

我们应该使用MTOM和WS-Security吗? 从ISSUE CXF-1904我得出结论,当使用MTOM和WS-Security时会出现问题。 CXF和axis2使用WSS4J,当您使用MTOM时,似乎WSS4J不能很好地处理数字签名的消息。

其他Web服务堆栈怎么样?

4 个答案:

答案 0 :(得分:2)

CXF可以与MTOM一起执行与WS-Security相关的事情,但附件最终不会签名或加密。 SOAP消息本身已签名/加密,但附件不是由于WSS4J中的限制。 (如果SpringWS使用WSS4J,它将具有相同的限制)

在使用带有CXF的WSS4JOutInterceptor时出于安全原因是默认的,我们关闭MTOM以确保它们被内联然后签名/加密。这是一个安全选择。 WSS4JOutInterceptor DOES有一个标志(out.setAllowMTOM(true)),它允许MTOM作为附件保留,但请记住,这些附件不会被“保护”。

答案 1 :(得分:1)

只需将数据作为byte[]发送即可。如果有大量数据,那么WCF确实支持MTOM。

没有情况下,您应该使用WSE吗? WSE基于ASMX Web服务。微软已经表示ASMX技术是“遗产”,他们不会修复它中的错误。更糟糕的是,WSE已经过时了,已被WCF取代。

答案 2 :(得分:0)

我建议在Apache CXF API上使用Spring-WS,它相当轻,记录更好,更易于使用。但是,Spring-WS不符合JAX-WS(在我看来,这不是坏事,但你可能会有所不同)。

Spring-WS只是一个关于底层SOAP实现的轻松,Spring友好的包装器,应该在Sun JAX-WS或Apache CXF之上工作,尽管我建议使用Sun的实现。它还具有完整的MTOM和WS-Security支持(通过Apache WSS4J)。

答案 3 :(得分:0)

来自http://ws.apache.org/wss4j/attachments.html

WSS4J 2.0.0通过SOAP with Attachments(SWA)Profile 1.1规范引入了对SOAP消息附件的签名和加密的支持。 WSS4J 1.6.x中不支持签名或加密邮件附件。可以通过基于" action"的方法或通过WS-SecurityPolicy在WSS4J中对附件进行签名和加密,如以下部分所述。