我有一個ASP.NET Web服務,我可以通過Windows程序訪問,但現在我想保護Web服務。我可以使用表單身份驗證來保護Web服務。你如何從Windows窗體應用程序訪問安全的Web服務?從Windows應用程序使用窗體身份驗證ASP.NET Web服務
3
A
回答
1
雖然這不是正確的方法,但tt在理論上可以按照您描述的方式使用表單身份驗證。這可以通過以下任一方式完成:
- 使用WebRequest以原始形式將請求發送到Web服務。這將涉及檢查響應,提取相關的表單 - 認證字段,併發迴響應以記錄用戶進入。這將生成一個cookie,您必須將其隨後的每個響應發送到服務
- 生成FormsAuhentication身份驗證自己動手。這很複雜,因爲它涉及在調用應用程序上同步機器密鑰,並且人爲地操縱發送到託管服務的機器的標題。
- 在需要與Web服務交互的會話開始時顯示用於登錄的表單身份驗證表單。然後,您可以收集生成的cookie,並按照選項(2)將其呈現給HTTP標頭中的服務。
正如您所看到的,這些方法非常複雜,並且從根本上來說是一種使用表單驗證的手段,因爲它從來沒有打算過。
Microsoft希望我們使用Windows身份驗證或SSL證書來保護對ASP.NET Web服務的訪問。請參閱MSDN上的HTTP Security and ASP.NET Web Services。
如果您能夠使用WCF,那麼還有其他幾個選項,包括在SOAP中構建自定義身份驗證機制的能力,以及WCF的一些支持。
絕大多數情況下,保護Web服務是工作中最棘手的部分之一。我所看到的許多現場解決方案都是妥協,比如上面的解決方案。
0
看來答案是否定的。表單身份驗證是一種基於cookie的機制,並且您的WinForms應用程序將無法保存和轉發cookie(如果有的話,無需一些嚴重的解決方法)。
在研究您的問題時,我寫下了一個潛在的解決方法,試圖使用NetworkCredential
對象,但這並不奏效。還嘗試過.NET 4.0中的ClientCredentials
。
var ss = new MySecureWebService.MyServiceSoapClient();
ss.ClientCredentials.UserName.UserName = "abc";
ss.ClientCredentials.UserName.Password = "123";
string asmxReturn = ss.HelloWorld(); //exception returned here
調用webmethod時,控制檯應用程序仍顯示登錄html頁面。
其他建議
- 如果你有源到Web服務,從提取它的邏輯放到了自己的組件。在WinForms應用程序中引用該程序集,就像調用Web服務一樣。
我知道您的目標是重用已部署的應用程序,但下一個最好的做法是使用通過.dll參考的相同邏輯/實現。
0
相關問題
- 1. 窗體身份驗證應用程序中的ASP.NET Web服務
- 2. 從Windows窗體應用程序的ASP.NET身份驗證
- 3. ASP.NET Web API窗體身份驗證子應用程序
- 4. ASP.NET窗體身份驗證和調用Web服務
- 5. 從Silverlight應用程序調用WCF服務時獲取身份驗證使用窗體身份驗證
- 6. ASP.NET應用程序未使用Windows身份驗證進行身份驗證
- 7. 部署ASP.NET VB應用程序與窗體身份驗證
- 8. 使用窗體身份驗證在ASP.NET Web窗體中路由
- 9. 使用SSRS ASP.NET ReportViewer和Web服務進行Windows身份驗證
- 10. 身份驗證WCF服務從ASP.NET應用程序
- 11. 黑莓支持窗體身份驗證 - ASP.NET MVC應用程序
- 12. 使用WCF自定義ASP.NET窗體身份驗證服務
- 13. 使用ASP.NET窗體身份驗證的WCF服務
- 14. ASP.NET身份 - Windows身份驗證和Web服務
- 15. ASP.NET窗體身份驗證與Windows Safari
- 16. 網站窗體身份驗證 - > SQL Server Windows身份驗證
- 17. ASP.NET身份+ Windows身份驗證(混合模式 - 窗體+ Windows)
- 18. 從身份服務器驗證的應用程序調用Web服務
- 19. 從窗體身份驗證轉換爲Windows身份驗證
- 20. 使用Windows身份驗證從C#應用程序調用ASMX服務?
- 21. 使用Windows身份驗證的AngularJS Web應用程序
- 22. 使用表單身份驗證保護asp.net web應用程序
- 23. 用於Windows服務的ASP.NET Web API 2身份驗證
- 24. Windows身份驗證和窗體身份驗證一起用於ASP.NET
- 25. 使用Windows身份驗證的ASP.NET應用程序登錄
- 26. 如何從asp.net窗體身份驗證轉換爲Windows身份驗證
- 27. Web服務 - Windows身份驗證
- 28. ASP.Net Windows身份驗證 - 用戶身份登錄到服務器
- 29. Twitterizer Web應用程序身份驗證
- 30. 與ASP.Net使用Windows身份驗證AJAX
堆棧溢出帖子應該包含更多的鏈接。例如,解釋爲什麼您提供的鏈接應該幫助或將相關信息複製到堆棧溢出。 – Mikhail 2012-12-02 03:17:15