2012-06-16 206 views
0

我是WCF新手,我想知道如何保護WCF Rest服務。 我有一個asp.net網站,只有註冊用戶可以訪問它,應用程序使用託管在同一個IIS服務器上的服務,我的問題是,我怎樣才能限制使用這個服務,因爲只有註冊用戶纔可以使用它,知道該服務可以被許多客戶使用(Android,iPhone,...)。我可以使用哪種類型的身份驗證?測試我創建了一個winform的服務,並使用HttpWebRequest。 PS:我無法使用https。 謝謝如何使用用戶名和密碼保護WCF Rest服務?

回答

0

最簡單的方法是使用asp.net兼容模式。 WCF服務調用將導致用於ASP.NET頁面的相同預處理,包括檢查ASP.NET auth和會話cookie。您還將能夠檢查HttpContext,包括httpcontext.current.user.identity.isauthenticated。如果用戶未通過身份驗證,請拋出異常或返回錯誤代碼。以下是一些更多信息:http://msdn.microsoft.com/en-us/library/aa702682.aspx

因此,如果您已經爲您的應用程序使用表單身份驗證,並且應該在用戶登錄到您的應用程序後調用該服務,則會進行設置。

您還可以創建身份驗證服務。該服務將允許客戶端發送用戶名/密碼,並將使用ASP.NET身份驗證來驗證用戶。它會發送一個auth cookie,然後你可以像上面那樣檢查未來的服務呼叫。見http://msdn.microsoft.com/en-us/library/bb386582.aspx

我相信認證服務可以使用json調用。請參閱How to Call .NET AuthenticationService from json client without ASP.NET

+0

謝謝Jappel的快速回答,但我想當我們談論Rest服務時,一切都必須通過URL發生,對吧?我在想,也許客戶端不能與cookie交互。 –

+0

我想很多人會同意你的看法。但需要授權來調用服務意味着您需要將某種令牌傳遞給服務器。像這樣的驗證數據真的是你的服務的元信息,而cookies提供了一個很好的方式將這些信息傳遞給服務器,而不會讓你的服務界面混亂。我確信其他人會與我衷心不同,但我認爲這是一個很好的妥協。 – Japple

+0

非常感謝@Japple,你的回答對我有很大的幫助,我會向我的客戶推薦cookie或實現OAuth(或類似的東西)。 –