我想在一个SOAP消息中传递userA和userB的用户名/密码。因此,我想在一个SOAP消息中传递两个UsernameToken。
我在想两种选择:
选项1) UsernameToken元素在安全元素中:
<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>选项2)每个UsernameToken都有一个安全元素
<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>--
什么是最标准的选择1)或2)?还是其他的?
发布于 2013-01-15 11:39:13
我可能记得,使用多个用户的最常见情况是通过几个中间节点传递消息。在SOAP规范方面,它们被命名为Actors,需要具有不同soap:actor属性的单独的wsse:安全元素。它对应于你问题中的备选案文2)。
考虑这里的下一个示例
<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>此示例包含两个块。带有"oracle“属性的一个用于对最终用户进行身份验证,另一个没有此属性的用于前端网关上的身份验证。
如果您的用例假设几个不是SOAP参与者的用户同时进行身份验证,那么您可以从问题中考虑选项1)。
https://stackoverflow.com/questions/14131575
复制相似问题