Java Web 服务: WS-Security 的大开销
2009-11-05 00:00:00 来源:WEB开发网维持数据完整性
数据完整性是与机密性相类似的一个问题。WS-Security 使用 XML Signature 确保数据不会在传输中被篡改,因为任何窜改都会导致签名失效。与 XML Encryption 相同,签名可以应用于整个消息或者所选部分,并且您可以使用多层签名来保证涉及多个系统的消息交换中的参与者所处理的数据的完整性。
虚构的在线购物系统还提供了很好的数据完整性的例子。使用 WS-Security,客户对发送给银行系统的付款指令进行签名,从而防止中间的商业系统随意修改指定的付款额。由于付款额经过客户签名,因此不需要对它进行加密,以便商业系统在向银行系统提交事务之前确定付款额正确无误。
此处,如果您的服务需要客户直接与之连接并且在内部执行所需必需的处理,则 WS-Security 和 XML Signature 又显得有些过于强大了。SLL 连接不仅能保证数据的机密性,它们还能防止数据在传输过程中被修改 — 但仅限于在在单一的客户机与服务器之间。如果服务器将数据传递给其他系统,则这些系统无法保证数据不被服务器修改。
确保真实性
在真实性方面,WS-Security 所提供的特性是 SLL 所无法匹及的,即使针对客户机与服务器之间的直接连接。使用 WS-Security 和 XML Signature 对消息进行签名,不仅允许您的文档在接收和处理时进行真实性验证,还可以为用于审计的文档提供可靠的真实性保障。
SSL 在这方面做的出色的地方就是在客户机与服务器之间建立连接时要求客户机证书作为身份证明。但是,它所提供的真实性保障要比消息数字签名弱很多。您不能轻易地将客户机与服务器之间交换的整个数据流保存为 SSL 连接的一部分,因此,即使您在建立该连接时验证了客户机证书,也无法在稍后返回并证明此步骤已得到正确处理。
更多精彩
赞助商链接