2012-08-05 206 views
3

因此,我有一個現有的Windows Phone 7應用程序,它使用我自己的授權(播放器使用別名和密碼登錄,並通過數據庫驗證它)轉到MVC Web服務。ASP.NET Web API和授權

現在我正在轉向ASP.NET Web API,並且對於如何爲它添加安全性我有點困惑?

我看到有AuthorizeAttribute,但我需要做些什麼來允許它們被授權?

任何指導在這裏將不勝感激。

回答

5

AuthorizeAttribute僅針對Thread.CurrentPrincipal進行檢查,以查看用戶是否有權訪問指定資源(在本例中爲控制器操作)。它不提供任何類型的認證機制。

就你而言,由於你有用戶名和密碼,你可以進行基本認證。最好的地方是在消息處理程序中。這裏是一個例子:BasicAuthenticationHandler

我不鼓勵你使用它,因爲它沒有測試背後的實現,但這應該給你一個想法。該類是一個抽象類,當您將其設置爲消息處理程序的基類時,您需要覆蓋AuthenticateUser方法並返回IPrincipal。如果返回值爲空,則表示用戶未通過身份驗證。如果您提供IPrincipal,那麼將會設置該IPrincipal,並且您的AuthorizeAttribute可以檢查它。

可以,例如,使用GenericPrincipal類來創建一個IPrincipal。假設你是ASP.NET主機上,可以如下注冊認證處理程序:

GlobalConfiguration.Configuration.MessageHandlers.Add(new MyAuthHandler()); 

概括起來,通過做一個消息處理程序的認證在某種程度上,不管你用什麼類型的身份驗證(基本身份驗證,OAuth等)。然後,通過AuthorizeAttribute進行授權。

另外,Dominick Baier在Securing ASP.NET Web APIs上有一個很好的介紹,我建議你檢查一下。

+0

感謝,我給一個試試吧! – SniperED 2012-08-06 07:09:04