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" 的一次性代码?加油吧。
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" 的一次性代码?加油吧。