2014-11-14 89 views
2

我需要將我的Web服務保護到現有項目,但不知道如何執行此操作。我試圖阻止一個用戶調用一個Web服務,他們可能會獲得關於另一個用戶的信息。保護Web API Web服務,Windows身份驗證

這是我的設置:.NET 4.5 - Web API Web服務,Windows身份驗證,ajax(angularjs)前端。使用NHibernate和SQL服務器。我知道我寫的每個Web服務都可以檢查httpcontext當前用戶,但我不想在每個Web服務方法中都這樣做。有沒有一個正確(更簡單)的方法來做到這一點?我讀了一些關於ASP.NET身份和Owin的信息,但這是我的頭,另外它只支持實體框架,我不得不編寫一些自定義提供程序或與NHibernate一起使用的東西。沒有,我正在尋找替代品,如使用global.asax或其他東西,並啓用服務器上的會話來存儲和有效的用戶信息。這是可以做的,還是有另一個更容易的選擇?

有什麼建議嗎?

謝謝!

回答

1

我假設您已經將您的Web服務器配置爲Windows身份驗證,並且該部分正在工作。

要獲得授權,請查看System.Web.Mvc.AuthorizeAttributeMSDN)。開箱即用,這將使用角色/ AD安全組。如果您有自定義授權(例如,存儲在您自己的數據庫中),我會考慮實施IPrinciple並將其設置爲Global.asax.csApplication_PostAuthenticateRequest。您的實施IPrinciple.IsInRole將檢查您從數據庫加載的權限。

+0

謝謝!很有幫助 – Rob 2014-11-17 17:07:30