SOAP 安全 header 和 SOAP header 之间的差异

Difference between SOAP security header and SOAP header

SOAP 安全性 header (WSSE) 和一般 SOAP header 有什么区别?如果我只使用简单的 soap headers 发送我的凭据怎么办?

为什么我应该使用这个:

<soapenv:Header>
  <wsse:Security  xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
     <wsse:UsernameToken wsu:Id="UsernameToken-1">
        <wsse:Username>login</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">XXXX</wsse:Password>
     </wsse:UsernameToken>
  </wsse:Security>

并且不应该使用这个:

<S:Header>
    <Username xmlns="http://ws.enterprise.com/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next">
        Username text
    </Username>
</S:Header>

提前致谢!

两者都能满足传递用户名和密码的功能需求。

两者都同样简单。

一个是 open standard (actually one small one in a set 端到端 SOAP 消息安全需求的深思熟虑的标准,范围包括身份验证、消息机密性、不可否认性等)。另一个特定于您的应用程序;专有,但可能就是您所需要的。

使用 WS-Security 的可能优势:

  • 已记录(对您来说工作更少。只需记录您使用 WS-Security UsernameToken,客户可以 Google 其余部分)
  • 已实施(对您的消费者来说工作量更少,甚至可能对您的 Web 服务实施而言)。许多库框架(Java:Apache WSS4J, Apache CXF, JavaScript: Node.js, Python: suds), JavaEE app servers such as IBM WebSphere, Oracle WebLogic, RedHat JBoss AS, and other enterprise platforms such as .NET - all have pre-built, in many cases configuration-only techniques for securing web services with this particular open standard (WS-Security UsernameToken)。
  • 成长空间。这只是 many related standards 之一。 Want/need 通过 username/password 验证某些客户端,但通过数字签名验证其他客户端?那里有一个相关的标准。不必发明一个,它不仅包括所需的 XML 语法,而且还考虑了各种攻击向量。开放标准已经有很多眼睛在审查它们。

可能的缺点:

  • 学习曲线:选择使用预建的东西意味着你(和你的客户)必须在某种程度上理解它。
  • 对某些极端情况有些矫枉过正。我在这里有点伸展。假设这是一个原型 Web 服务,从未计划用于商业或生产用途。构建一个 Web 服务和一个 Web 服务客户端?您只是不想在一段时间内离开 "wide open" 的一次性代码?加油吧。