Microsoft最近发布了ASP.NET Identity 2,该版本支持双重认证、账号锁定以及防伪印章功能,还加强了用户账号和索引。此外新版本还包含一个改进的密码验证器并修复了一些bug。web
借助于双重认证,开发者可以使用定制的提供程序保护用户账号,而不是使用传统的SMS和基于email的验证。例如,开发者可以编写本身的自定义提供程序,例如QR代码生成器,并使用手机上的身份验证应用程序验证它们。app
新版本的ASP.NET Identity 2.0可以保护用户远离暴力破解的困扰,若是用户输入了错误的密码或者双重代码,那么相关的用户账号会被锁定一段时间。做为一个开发人员,你能够配置无效尝试的次数和时间间隔,另外你也能够经过一个选项为某些用户账号关闭该功能。ide
新引入的防伪印章功能让你可以在密码或者相关的社会登陆账号发生改变的时候从应用程序中注销。你能够按照官方MSDN博客上的介绍经过注册一个CookieAuthenticationProvider在Startup.Auth.cs中进行配置。函数
最新版本提供了一个扩展钩子,借助于该钩子你能指定用户表和角色表的主键,对于那些将UserId存储为GUID或者Int的应用程序而言这是很是有用的。工具
在新版本发布以前,咱们没法经过UserManager删除用户,这一问题已经被解决,你可以使用DeleteAsyn()函数删除用户。中间件
var result = await UserManager.DeleteAsync(user);
你可使用Factory实现从OWIN上下文中获取到一个UserManager的实例。这一模式与咱们从OWIN上下文中获取AuthenticationManager 从而进行登陆和登出的模式相似。为了使用这一功能,咱们须要在StartupAuth.cs类中添加下面的代码:blog
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。ci
与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月份发布的预览版中添加的。
查看英文原文:ASP.NET Identity 2 Adds Two-factor Authentication, Account Lockout, Security Stamp and Bug Fixes