1. 程式人生 > >ASP.NET Identity簡介

ASP.NET Identity簡介

Why Identity?

ASP.NET Identity wasdesigned to solve site membership requirements.

一、Advantageof ASP.NET Identity


微軟在.NET Framework 4.5 中推出了ASP.NET Identity,它為ASP.NET 應用程式提供了一系列的API用來管理和維護使用者,有以下優點:

易於整合:ASP.NET Identity 可以用在所有的 ASP.NET 框架上,例如 ASP.NET MVC, Web Forms,Web Pages,ASP.NET Web API

持久化

:預設情況下,ASP.NET Identity將使用者所有的資料儲存在資料庫中。ASP.NET Identity 使用 Entity Framework 實現其所有的檢索和持久化機制。

通過Code First,你可以對資料庫架構的完全控制,一些常見的任務例如改變表名稱、改變主鍵資料型別等都可以很輕易地完成。

基於宣告的:ASP.NET Identity 支援基於宣告的身份驗證,它使用一組"宣告"來表示使用者的身份標識。相對於"角色","宣告"能使開發人員能夠更好地描述使用者的身份標識。"角色"本質上只是一個布林型別(即"屬於"或"不屬於"特定角色),而一個"宣告"可以包含更多關於使用者標識和成員資格的資訊。

二、ASP.NETIdentity主要組成部分

 

ApplicationUser和ApplicationDbContext分別繼承自己Microsoft.AspNet.Identity.EntityFramework的IdentityUser和IdentityDbContext。但與使用者相關的操作實際上是通過Microsoft.AspNet.Identity.Core的 UserManager類來完成的,而UserManager的所有操作最終是由UserStore實現。

 

三、傳統ASP.NET身份驗證方式

安全問題一直是ASP.NET的關注點。其中,Windows驗證和表單驗證(Forms Authentication)就是ASP.NET兩種主要的安全機制。

Windows驗證:一般用於區域網應用。使用Windows驗證時,使用者的Windows安全令牌在使用者訪問整個網站期間使用HTTP請求,進行訊息傳送。應用程式會使用這個令牌在本地(或者域)裡驗證使用者賬號的有效性,也會評估使用者所在角色所具備的許可權。當用戶驗證失敗或者未授權時,瀏覽器就會定向到特定的頁面讓使用者輸入自己的安全憑證(使用者名稱和密碼)。

Forms驗證:Windows驗證的侷限性非常明顯,一旦使用者有超出本地域控制器範圍的外網使用者訪問網站,就會出現問題。ASP.NET表單驗證(Forms Authentication)很好的彌補了這一缺陷。使用表單驗證,ASP.NET需要驗證加密的HTTP cookie或者查詢字串來識別使用者的所有請求。cookie與ASP.NET會話機制(session)的關係密切,在會話超時或者使用者關閉瀏覽器之後,會話和cookie就會失效,使用者需要重新登入網站建立新的會話。

四、ASP.NETIdentity驗證的原理

講到Identity的驗證方式就繞不過Claims的認證方式,Claims認證最大的好處就是簡單的隔離了驗證(Authentication)和授權(Authorization)兩個部分,但這也是它最大的優勢。


.NET下Claims-based認證的主要由ClaimsIdentity以及ClaimsPrincipal這兩個類組成,ClaimsIdentity可以理解為攜帶使用者資訊的證書,而ClaimsPrincipal可以理解為應用頒發的令牌,當然,認證機構可以是應用本身,也可以是實現Owin(OpenWeb Interface for .NET)方式的第三方認證。