我将开始一个新项目,我将向外部合作伙伴公开SOAP Web服务。主要目标是确保端到端交换消息的安全性。 我们的主要安全要求:
我听说过可以用来解决这个问题的新协议 WS-Security 。我的替代解决方案是将一些安全元素合并到我的SOAP Body中,如下所示:
<soapenv:Body>
<nms:Request>
<nms:requestor>bankX</nms:requestor>
<nms:nonce>45465464</nms:nonce>
<nms:created>12/12/2017</nms:created>
<nms:hmac256>hmacvalue</nms:hmac256>
<nms:id>someID</nms:id>
<nms:amount>5000</nms:amount>
<nms:currency>EUR</nms:currency>
</nms:Request>
</soapenv:Body>
使用 WS-Security 有什么好处?使用我自己的解决方案比WS-Security有什么缺点?
我正在使用 Java8 以及完整的 Spring 堆栈。
感谢您的帮助。
答案 0 :(得分:2)
WS-Security是一个国际标准,因此它为您提供了使用符合WS-Security标准的软件堆栈的所有Web服务客户端/服务器之间的互操作性,您可以在大多数主要编程语言中找到它们,例如: Apache CXF或Glassfish Metro for Java; WCF for .Net。因此,例如,WCF驱动的.Net客户端可以使用SOAP + WS-Security与其Java对应方进行通信。他们已将互操作测试作为OASIS标准化过程的一部分。
您还可以使用WS-SecurityPolicy直接在服务的WSDL中表达您的安全要求,以便您的消费者可以自动(在某种程度上)发现它们,以便安全地与您的服务进行通信。
除了互操作性之外,获得安全标准还需要时间,允许安全专家的国际社区对其进行审核,挑战,改进,等等。因此,如果您想要相同的话,使用现有的成熟标准会更安全功能水平和稳健性。