2

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

主要问题是:执行此操作的首选方法是什么?

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

其他 Web 服务堆栈呢?

4

4 回答 4

2

CXF 可以与 MTOM 一起做 WS-Security 相关的事情,但附件最终不会被签名或加密。SOAP 消息本身经过签名/加密,但附件不受 WSS4J 限制。(如果 SpringWS 使用 WSS4J,也会有同样的限制)

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

于 2009-08-12T13:52:49.957 回答
1

只需将数据作为byte[]. 如果数据量很大,那么 WCF 确实支持 MTOM。

任何情况下都不应使用 WSE。WSE 基于 ASMX Web 服务。微软表示 ASMX 技术是“遗留的”,他们不会修复其中的错误。更糟糕的是,WSE 已经过时了,已经被 WCF 取代了。

于 2009-08-12T09:23:44.363 回答
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)。

于 2009-08-12T11:06:56.353 回答
0

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

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

于 2014-08-03T09:23:15.653 回答