1

userAとuserBのユーザー名/パスワードを1つのSOAPメッセージで渡したい。したがって、1つのSOAPメッセージで2つのUsernameTokenを渡したいと思います。

私は2つの選択肢を考えています:

オプション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)は何ですか?または他?

4

1 に答える 1

3

私が思い出すかもしれない複数のユーザーを使用する最も一般的なケースは、いくつかの中間ノードを介してメッセージを渡すことです。SOAP仕様に関しては、それらはActorsという名前であり、異なるsoap:actor属性を持つ個別のwsse:Security要素を必要とします。それはあなたの質問からのオプション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>

この例には2つのブロックが含まれています。「oracle」属性を持つものはエンドユーザーの認証に使用され、この属性のないものはフロントエンドゲートウェイでの認証に使用されます。

ユースケースがSOAPアクターではない複数のユーザーの同時認証を想定している場合は、質問からオプション1)を検討できます。

于 2013-01-15T11:39:13.867 に答える