我使用WS-Security向外部Web服務發出請求。形式SoapUI它一切正常。從.Net(C#)它不。類型屬性的Webservice WS-Security名稱空間
我發現請求中的差異是安全標頭中Type屬性的命名空間。
從soapUI的所述標頭包含:
<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-90bae2a1-88a9-4b4c-b84e-9244d3576051-7">
<o:Username>******</o:Username>
<o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">******</o:Password>
</o:UsernameToken>
</o:Security>
從.NET(C#)的XML是這樣的:
<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-90bae2a1-88a9-4b4c-b84e-9244d3576051-7">
<o:Username>******</o:Username>
<o:Password o:Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">******</o:Password>
</o:UsernameToken>
</o:Security>
問題是服務器不接受所述O:在類型密碼元素的屬性。
首先:服務器是否應該在Type屬性中接受o:
第二個(也是更重要的):有沒有辦法從Type屬性中刪除o:因爲我沒有控制web服務?
在C#中,我使用帶有TransportWithMessageCredential安全模式的basicHttpBinding。