Web services WS-Security:在SOAP安全标头中包含多个用户标识的正确方法是什么?
我想在一条SOAP消息中传递userA和userB的用户名/密码。因此,我希望在一条SOAP消息中传递两个UsernameToken 我有两个选择: 备选方案1) UsernameToken安全元素中的元素Web services WS-Security:在SOAP安全标头中包含多个用户标识的正确方法是什么?,web-services,soap,ws-security,Web Services,Soap,Ws Security,我想在一条SOAP消息中传递userA和userB的用户名/密码。因此,我希望在一条SOAP消息中传递两个UsernameToken 我有两个选择: 备选方案1) UsernameToken安全元素中的元素 <soapenv:Header> <wsse:Security xmlns:wsse="sec" xmlns:wsu="ut"> <wsse:UsernameToken wsu:Id="UsernameToken-3">
<soapenv:Header>
<wsse:Security xmlns:wsse="sec" xmlns:wsu="ut">
<wsse:UsernameToken wsu:Id="UsernameToken-3">
<wsse:Username>userA</wsse:Username>
<wsse:Password Type="text">passA</wsse:Password>
</wsse:UsernameToken>
<wsse:UsernameToken wsu:Id="UsernameToken-4">
<wsse:Username>userB</wsse:Username>
<wsse:Password Type="text">passB</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
乌瑟拉
帕萨
用户B
通行证
备选方案2) 每个用户名令牌的安全性元素:
<soapenv:Header>
<wsse:Security xmlns:wsse="sec" xmlns:wsu="ut">
<wsse:UsernameToken wsu:Id="UsernameToken-3">
<wsse:Username>userA</wsse:Username>
<wsse:Password Type="text">passA</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
<wsse:Security xmlns:wsse="sec" xmlns:wsu="ut">
<wsse:UsernameToken wsu:Id="UsernameToken-4">
<wsse:Username>userB</wsse:Username>
<wsse:Password Type="text">passB</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
乌瑟拉
帕萨
用户B
通行证
--
最标准的选项是什么(1)或2)?或者其他?我记得使用多个用户最常见的情况是通过多个中间节点传递消息。根据SOAP规范,它们被命名为actor,并且需要使用不同的SOAP:actor属性。它对应于您问题中的选项2) 考虑下一个例子:
样品
神谕
神谕
神谕
此示例包含两个块。具有“oracle”属性的用于对最终用户进行身份验证,没有此属性的用于在前端网关上进行身份验证
如果您的用例假设同时是几个不是SOAP参与者的用户,那么您可以考虑选项1)。
<soap:Header>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext">
<wsse:UsernameToken wsu:Id="sample" xmlns:wsu="http://schemas.xmlsoap.org/ws/2003/06/utility">
<wsse:Username>sample</wsse:Username>
<wsse:Password Type="wsse:PasswordText">oracle</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
<wsse:Security soap:actor="oracle" xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext">
<wsse:UsernameToken wsu:Id="oracle" xmlns:wsu="http://schemas.xmlsoap.org/ws/2003/06/utility">
<wsse:Username>oracle</wsse:Username>
<wsse:Password Type="wsse:PasswordText">oracle</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>