我们必须使用web服务堆栈传输二进制数据,并且在此过程中,我们必须对web服务请求/响应进行签名。
主要的问题是:做这件事的首选方法是什么?
我们应该使用MTOM和WS-Security吗?我从ISSUE CXF-1904得出的结论是,在使用MTOM和WS-Security时会出现问题。CXF和axis2使用WSS4J,当您使用MTOM时,WSS4J似乎不能很好地处理数字签名的消息。
其他web服务堆栈又如何呢?
发布于 2014-08-03 09:23:16
来自http://ws.apache.org/wss4j/attachments.html:
WSS4J 2.0.0通过带附件的SOAP概要文件1.1规范引入了对签名和加密SOAP消息附件的支持。WSS4J 1.6.x中不支持对邮件附件进行签名或加密。附件可以通过“操作”-based方法或WS-SecurityPolicy在WSS4J中进行签名和加密,如以下各节所述。
发布于 2009-08-12 05:52:50
CXF可以与MTOM一起做与WS-Security相关的事情,但附件最终不会经过签名或加密。SOAP消息本身是经过签名/加密的,但是附件并不是由于WSS4J中的限制。(如果SpringWS使用WSS4J,它将具有相同的限制)
出于安全原因,在CXF中使用WSS4JOutInterceptor时,我们关闭MTOM以确保它们被内联,然后进行签名/加密。这是一个安全的选择。WSS4JOutInterceptor确实有一个标志(out.setAllowMTOM(true)),它允许MTOM保留为附件,但请记住,这些附件将不是“安全的”。
发布于 2009-08-12 01:23:44
只需将数据作为byte[]
发送即可。如果有大量数据,则WCF支持MTOM。
在没有的情况下,你应该使用WSE。WSE基于ASMX web服务之上。微软表示,ASMX技术是“遗留的”,他们不会修复其中的错误。更糟糕的是,WSE已经相当过时了,已经被WCF所取代。
https://stackoverflow.com/questions/1264992
复制