ASP.NET Identity 2新增雙重認證、帳號鎖定、防偽印章功能
英文原文:ASP.NET Identity 2 Adds Two-factor Authentication, Account Lockout, Security Stamp and Bug Fixes
Microsoft 最近發布了 ASP.NET Identity 2,該版本支持雙重認證、帳號鎖定以及防偽印章功能,還增強了用戶帳號和索引。此外新版本還包含一個改進的密碼驗證器并修復了一些 bug。
借助于雙重認證,開發者能夠使用定制的提供程序保護用戶帳號,而不是使用傳統的 SMS 和基于 email 的驗證。例如,開發者能夠編寫自己的自定義提供程序,例如 QR 代碼生成器,并使用手機上的身份驗證應用程序驗證它們。
新版本的 ASP.NET Identity 2.0 能夠保護用戶遠離暴力破解的困擾,如果用戶輸入了錯誤的密碼或者雙重代碼,那么相關的用戶帳號會被鎖定一段時間。作為一個開發人員,你可以配置無效嘗試的 次數和時間間隔,另外你也可以通過一個選項為某些用戶帳號關閉該功能。
新引入的防偽印章功能讓你能夠在密碼或者相關的社會登錄帳號發生改變的時候從應用程序中注銷。你可以按照官方 MSDN 博客上的介紹通過注冊一個 CookieAuthenticationProvider 在 Startup.Auth.cs 中進行配置。
最新版本提供了一個擴展鉤子,借助于該鉤子你能指定用戶表和角色表的主鍵,對于那些將 UserId 存儲為 GUID 或者 Int 的應用程序而言這是非常有用的。
在新版本發布之前,我們無法通過 UserManager 刪除用戶,這一問題已經被解決,你能夠使用 DeleteAsyn ()函數刪除用戶。
var result = await UserManager.DeleteAsync (user);
你可以使用 Factory 實現從 OWIN 上下文中獲取到一個 UserManager 的實例。這一模式與我們從 OWIN 上下文中獲取 AuthenticationManager 從而進行登錄和登出的模式類似。為了使用這一功能,我們需要在 StartupAuth.cs 類中添加下面的代碼:
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
HttpContext.GetOwinContext () .GetUserManager<ApplicationUserManager>(); DbContextFactory 中間件每一個請求都會返回一個 ApplicationDbContext 實例,你可以在應用程序中使用它,同時可以在 StartupAuth.cs 中使用下面的代碼進行配置:
app.CreatePerOwinContext (ApplicationDbContext.Create);
Microsoft 使用新的 IndexAttribute 為 Username 添加了唯一的索引;此外還增強了密碼驗證器,1.0 提供了一個僅能驗證最小長度的基礎驗證器,而在新版本中我們能夠通過配置對密碼的復雜性進行更多的控制。該版本還提供了 NuGet 包以及示例 ASP.NET MVC 應用程序,并根據社區的反饋修復了一些 bug。
與 ASP.NET Identity 2 RTM 一起發布的還有 Entity Framework 6.1,后者的特性包括工具整合、IndexAttribute 和公共映射 API,此外它還支持 .ToString、String.Concat、enum HasFlags,能夠通過 App/Web.config 文件配置攔截器。
來自于 Microsoft 的軟件工程師 Pranav Rastogi 在他的博客中概括了應用程序從 ASP.NET Identity 1.0遷移到 2.0、從 2.0 beta 1 遷移到 2 所需要的步驟。除了上面提到的特性之外,該版本還包含一些其他的特性,例如帳號確認、密碼重置、UsersStore 和 RolesStore 上的 IQueryable,這些功能最初都是在 2013 年 12 月份發布的預覽版中添加的。
<span id="shareA4" class="fl"> </span>