因此,我有一個現有的Windows Phone 7應用程序,它使用我自己的授權(播放器使用別名和密碼登錄,並通過數據庫驗證它)轉到MVC Web服務。ASP.NET Web API和授權
現在我正在轉向ASP.NET Web API,並且對於如何爲它添加安全性我有點困惑?
我看到有AuthorizeAttribute
,但我需要做些什麼來允許它們被授權?
任何指導在這裏將不勝感激。
因此,我有一個現有的Windows Phone 7應用程序,它使用我自己的授權(播放器使用別名和密碼登錄,並通過數據庫驗證它)轉到MVC Web服務。ASP.NET Web API和授權
現在我正在轉向ASP.NET Web API,並且對於如何爲它添加安全性我有點困惑?
我看到有AuthorizeAttribute
,但我需要做些什麼來允許它們被授權?
任何指導在這裏將不勝感激。
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上有一個很好的介紹,我建議你檢查一下。
感謝,我給一個試試吧! – SniperED 2012-08-06 07:09:04