2011-09-14 20 views
6

WSE 3.0を使用してMVC3 .NET WebアプリケーションからJava Webサービスを呼び出そうとしています。WSE 3.0(.NET)のUsernameTokenのNonce要素にEncodingType属性を追加する方法

ただし、Webサービスでは、UsernameTokenのNonce要素に「EncodingType」属性が必要です。続いて、このJava Webサービスと正常に動作するサンプルSOAPエンベロープである:以下の

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v1="http://schema.mydomain.org/sms/v1_0"> 
    <soap:Header> 
    <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 xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
     <wsse:Username>myUsername</wsse:Username> 
     <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">myPassword</wsse:Password> 
     <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">XQkp6oYc3DRv41cxkSTW8w==</wsse:Nonce> 
     <wsu:Created>2011-09-13T20:50:08.355Z</wsu:Created> 
     </wsse:UsernameToken> 
    </wsse:Security> 
    </soap:Header> 
    <soap:Body> 
     <v1:ping/> 
    </soap:Body> 
</soap:Envelope> 

は(フィドラーでキャプチャ)VS2010が生成プロキシから生成されたSOAPエンベロープです:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
    <wsse:Security env:mustUnderstand="true"> 
     <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-111f922b-72c1-4057-bce4-f6555552ce6a"> 
     <wsse:Username>myUsername</wsse:Username> 
     <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">myPassword</wsse:Password> 
     <wsse:Nonce>qYse3Lor9sAJ9pKPefgkKQ==</wsse:Nonce> 
     <wsu:Created>2011-09-13T20:50:38Z</wsu:Created> 
     </wsse:UsernameToken> 
    </wsse:Security> 
    </env:Header> 
    <soap:Body> 
     <v1:ping/> 
    </soap:Body> 
</soap:Envelope> 

この属性場合このWebサービスから「無効なセキュリティトークンが提供されました(ユーザ名トークンの処理中にエラーが発生しました)」というメッセージが返されます。

EncodingType属性を追加するにはどうすればよいですか?

答えて

2

私はEncodingTypeフラグがWSSEユーザー名と、このJava WebサービスであることはApache CXFフレームワークのバージョンに必要なスペックであるトークンのセキュリティ仕様1.1によれば、ある

...受け入れ可能な解決策を見つけましたを使用して。 .NETはその仕様を満たしていません。幸運にも、CXFには要件を無効にするフラグがありました。私たちはそれをして、今コミュニケーションできるようになりました。

+0

こんにちは、私はこの正確な問題を抱えています。フラグがあることを知ってうれしいですが、あなたがまたどの旗を言いましたか、それでも私はまだ見なければなりません。 – toongeorges

3

"isBSPCompliant"をエンドポイントのjaxwsプロパティとして "false"に設定すると、EncodingTypeの問題が解決されることがわかりました。これはあなたが見つけた解決策でしたか?

+0

それは私のためのトリックでした: AtliB

関連する問題