使用WS-Security有什么好处?

时间:2018-02-22 17:20:28

标签: web-services soap jax-ws spring-ws ws-security

我将开始一个新项目,我将向外部合作伙伴公开SOAP Web服务。主要目标是确保端到端交换消息的安全性。 我们的主要安全要求:

  1. 验证
  2. 完整性
  3. 反重播攻击。
  4. 保密
  5. 我听说过可以用来解决这个问题的新协议 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 堆栈。

    感谢您的帮助。

1 个答案:

答案 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中表达您的安全要求,以便您的消费者可以自动(在某种程度上)发现它们,以便安全地与您的服务进行通信。

除了互操作性之外,获得安全标准还需要时间,允许安全专家的国际社区对其进行审核,挑战,改进,等等。因此,如果您想要相同的话,使用现有的成熟标准会更安全功能水平和稳健性。