2011-09-30 35 views
0

第一次海報非ASMX SOAP 1.1 Web服務,所以請把它有點容易對我,如果我違反任何發帖規則 - 我看過他們,我想我是正確的。消費在C#與頭安全

我一直在尋找了一段時間,然後再發布,似乎無法找到什麼我試圖這樣做,我想我會在這裏發佈的指導。

我需要寫一個C#.NET 3.5程序消耗用Java開發的Web服務。我從事使用Web引用的.NET實踐中使用ASMX Web服務的經驗,寫我的經驗寫Dynamics CRM插件和軟件,但這讓我難住。我的第一個嘗試是使用Web引用(是的,我知道 - 不是WCF),但是Web服務需要在SOAP頭中包含PasswordDigest(帶有隨機數和創建的SHA-1),一個用戶名令牌和時間戳記令牌,我找不到使用Web引用將這些添加到SOAP標頭的方法。我的第二次嘗試是使用服務引用(我相信,但我可能是錯誤的哈哈,這個是WCF),但我沒有太多的練習,我在網上找到的任何教程並不多幫幫我。

,當我嘗試使用WS每一次,我從服務器拒絕對暫時無法驗證。

我的問題是我怎麼消耗與C#.NET 3.5這些要求的Web服務?

謝謝。

+0

要創建代理,請打開「添加服務引用」對話框,並在其中放置服務URL,最後添加「?wsdl」。 –

+0

使用「添加Web引用」對話框或wsdl.exe創建代理後,您可以重寫GetWebRequest和GetWebResponse方法,以使用發送到服務器的標題進行播放。 –

回答

2

IIRC,微軟WSE(2.0或3.0)有一些東西叫做UsernameToken,你需要在外發SOAP消息的某個地方插入東西,然後你就完成了設置。當然,這個答案令人不滿意了很多,所以我會在你扔幾個鏈接,並希望您熟讀:

http://www.codeproject.com/KB/webservices/WS-Security.aspx

http://www.reliablesoftware.com/articles/WSESecurity.html

http://www.devx.com/security/Article/15634

(和這一切再次顯示了SOAP和WSDL實際上存在的缺陷)。

+1

所以我最終放棄了我的.NET版本回到2.0,安裝WSE 3.0,並按照第三個鏈接中的說明來使這個工作。非常感謝你! 作爲一種好奇心的衡量標準,是由微軟或SOAP/WSDL協議引起的整個問題,爲什麼?看起來奇怪的是,我無法用普通的.NET庫處理這個問題,而是不得不恢復到過時的庫... – jacobappleton

+0

AFAIK,WSDL並沒有包含關於如何確保Web服務安全的足夠信息。從來沒有我的經驗,我有一個或多或少的現實世界的Web服務(閱讀:創造。由一些dork誰認爲如果WS- *標準存在,他們都必須以很奇怪的方式使用),這將只是在添加時工作對 –

+0

的引用哈哈是啊,似乎有太多那些只是因爲可以使用這些東西的dorks。再次感謝你的幫助! – jacobappleton