我已經成功創建了一個無需使用身份驗證即可正常工作的WS客戶端。使用WSE 3.0添加SOAP:HEADER用戶名和密碼
但是,服務器(WebSphere)現在需要添加一個ws-security用戶名令牌,並且我很難做到這一點。得到的SOAP消息應該是這個樣子:
<soapenv:Envelope
xmlns:ns="http://foo.bar/1.0"
xmlns:ns1="http://www.witsml.org/schemas/140"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>foo</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bar</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">foooooobar==</wsse:Nonce>
<wsu:Created>2010-01-25T13:09:24.860Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<ns:fooBar>...</ns:fooBar>
</soapenv:Body>
我已經下載並安裝微軟的WSE 3.0 SDK,並在我的Visual Studio 2005項目添加到該DLL的引用。
我現在可以訪問Microsoft.Web.Services3。*命名空間,但是我目前很難理解如何繼續。
客戶端代碼已被Web引用自動生成的,所以我只能做的工作較少量將消息發送到服務器未經認證:
WS.FooResultHttpService ws = new WS.FooResultHttpService();
ws.Url = "http://foo.bar.baz";
ws.SendSomething(message);
我剛開始調查使用Microsoft.Web.Services3.Security.Tokens.UsernameTokenManager
,但到目前爲止,我還沒有能夠得到任何東西和運行。
任何提示將不勝感激,因爲我似乎無法在網上找到任何好的食譜。
謝謝!
謝謝,這非常有幫助! – csl 2010-01-26 14:44:03
+1非常有用。如果在VS2010上使用WseWsdl3.exe生成代理問題,則通過在註冊表中添加條目來解決此問題。在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \中添加名爲「sdkInstallRootv2.0」的字符串鍵值爲「C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A」 – Siva 2012-04-02 13:52:13