SOAP安全标头和SOAP标头之间的区别

时间:2016-05-12 13:30:37

标签: xml web-services soap jax-ws

SOAP安全标头(WSSE)和常规SOAP标头之间有什么区别?如果我只使用简单的soap标头发送我的凭据怎么办?

为什么我应该使用它:

<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>

提前致谢!

1 个答案:

答案 0 :(得分:2)

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

两者都同样简单。

一个是open standard(实际上是一个小的in a set经过深思熟虑的端到端SOAP消息安全需求标准,包括身份验证,消息机密性,不可否认等等。 )。另一个是特定于您的申请;专有的,但可能就是你所需要的一切。

使用WS-Security的可能优势:

  • 已经记录(减少工作量。只需记录您使用WS-Security UsernameToken,客户可Google其余部分)
  • 已实施(为您的消费者减少工作量,甚至可能用于您的Web服务实施)。大量的库框架(Java:Apache WSS4J,Apache CXF,JavaScript:Node.js,Python:suds),JavaEE应用服务器,如IBM WebSphere, Oracle WebLogic,RedHat JBoss AS和其他企业平台(例如.NET - 都已预先构建,在许多情况下,仅使用配置技术来保护使用此特定开放标准的Web服务({ {3}})。
  • 成长的空间。这只是WS-Security UsernameToken中的一个。想要/需要通过用户名/密码验证一些客户端,但其他客户通过数字签名验证?那里有一个相关的标准。不必发明一个,它不仅包括所需的XML语法,还包括思考各种攻击向量。开放标准已经有很多人在审视它们。

可能的缺点:

  • 学习曲线:选择使用预先构建的东西意味着您(以及您的客户)必须在某种程度上理解它。
  • 针对某些边缘情况的过度杀伤。我在这里伸展了一下。假设这是一个原型Web服务,从未用于商业或生产用途。构建一个Web服务和一个Web服务客户端?扔掉的代码,你不想在一段时间内“敞开”?去吧。