使用 WS-Security 有哪些优势?

What are the advantages of using WS-Security?

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

  1. 身份验证
  2. 诚信
  3. 反重放攻击。
  4. 保密性

我听说有一个新协议 WS-Security,可以用来解决这个问题。我的替代解决方案是像这样将一些安全元素合并到我的 SOAP 主体中:

<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 堆栈。

感谢您的帮助。

WS-Security 是一项国际标准,因此它使您可以使用符合 WS-Security 的软件堆栈在所有 Web 服务 clients/servers 之间实现互操作性,正如您可以在大多数主要编程语言中找到的那样,例如Java 的 Apache CXF 或 Glassfish Metro; .Net 的 WCF。因此,例如,WCF-powered .Net 客户端可以使用 SOAP+WS-Security 与其 Java 对应方进行通信。他们已经将互操作性测试作为 OASIS 标准化过程的一部分。

您还可以使用 WS-SecurityPolicy 在服务的 WSDL 中直接表达您的安全要求,以便您的消费者可以(在某种程度上)自动发现它们,以便安全地与您的服务通信。

除了互操作性之外,制定正确的安全标准需要时间,让国际安全专家社区对其进行审查、挑战、改进等。因此,如果你想使用现有的成熟标准会更安全相同级别的功能和稳健性。