首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WS- Security :在SOAP安全头中包含多个用户标识的正确方法是什么?

WS- Security :在SOAP安全头中包含多个用户标识的正确方法是什么?
EN

Stack Overflow用户
提问于 2013-01-03 00:49:47
回答 1查看 2.1K关注 0票数 1

我想在一个SOAP消息中传递userA和userB的用户名/密码。因此,我想在一个SOAP消息中传递两个UsernameToken

我在想两种选择:

选项1) UsernameToken元素在安全元素中:

代码语言:javascript
复制
<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都有一个安全元素

代码语言:javascript
复制
 <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)?还是其他的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-15 11:39:13

我可能记得,使用多个用户的最常见情况是通过几个中间节点传递消息。在SOAP规范方面,它们被命名为Actors,需要具有不同soap:actor属性的单独的wsse:安全元素。它对应于你问题中的备选案文2)。

考虑这里的下一个示例

代码语言:javascript
复制
<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)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14131575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档