0

Apache CXF (Java) を使用して実装された Web サービスを使用する .NET クライアント (WCF) を作成していますが、驚くべきことに、WCFでPasswordタグのType属性をPasswordTextに設定するのは非常に困難です。つまり、SOAP ヘッダーを次のようにしたいと考えています。

  <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
     <wsse:UsernameToken wsu:Id="UsernameToken-11" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:Username>test</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">a287645857cfaaddf82e2d333651b3e0</wsse:Password>
        <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">oKGlwEkbkhYJH6upsbiqeQ==</wsse:Nonce>
        <wsu:Created>2011-10-25T13:10:11.958Z</wsu:Created>
     </wsse:UsernameToken>
  </wsse:Security>

しかし、実際のヘッダーは次のようになります。

  <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
     <o:UsernameToken u:Id="uuid-5acb0b47-1b52-4535-bfaf-b9e76621b7eb-1">
        <o:Username>test</o:Username>
        <o:Password>a287645857cfaaddf82e2d333651b3e0</o:Password>
     </o:UsernameToken>
  </o:Security>

ご覧のとおり、Password タグに Type 属性がありません。Web でのいくつかの調査によると、これを修正するにはおそらくインターセプターを作成する必要があることが示されているようです。これを修正するための簡単な解決策、つまり構成設定があると思いましたが、おそらくそうではありません。とにかく、この質問を投稿することで、いくつかの明確化を期待しています。

Type 属性がないため、WS サーバーは要求を拒否します。BSP 仕様の機能チェック。コンプライアンス(これが何であるかはわかりません)は例外をスローします。

よろしく、 オラ

4

1 に答える 1

-1

OK、実装には WSE 2.0 SP3 を使用する必要があります。WSE 3.0 ではないことに注意してください。

WCF はあなたを助けることができません。

必要なものはすべてここにあります。

これはより良いサンプルです。

于 2011-10-25T15:47:43.237 に答える