![](/img/trans.png)
[英]Authentication from ASP.NET web app to ASP.NET web service to SQL Server
[英]ASP.NET web service using forms authentication from a windows app
我有一個可以通過Windows程序訪問的ASP.NET Web服務,但是現在我想保護Web服務的安全。 我可以使用表單身份驗證來保護Web服務。 如何從Windows窗體應用程序訪問受保護的Web服務?
盡管這不是正確的方法,但是從理論上講,tt可以按照您描述的方式使用表單身份驗證。 這可以通過以下任一方法來完成:
如您所見,這些方法非常復雜,從根本上來說,是使用表單身份驗證的一種黑客手段,而從沒有使用過。
Microsoft打算讓我們使用Windows身份驗證或SSL證書來保護對ASP.NET Web服務的訪問。 請參閱MSDN上的HTTP安全性和ASP.NET Web服務 。
如果您能夠使用WCF,那么還會出現一些其他選擇,包括在WCF的支持下將自定義身份驗證機制構建到SOAP中的能力。
在大多數情況下,保護Web服務是工作中最棘手的部分之一。 我看到的許多實時解決方案都是上述折衷方案。
看來答案是否定的。 表單身份驗證是一種基於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
調用Web方法時,控制台應用程序仍顯示有登錄html頁面。
其他建議
我了解您的目標是重用已部署的應用程序,但下一個最好的方法是通過.dll引用使用相同的邏輯/實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.