Microsoft よりリリースされた ASP.NET Identity 2 では、ユーザのアカウント拡張とインデックス化に加え、二要素認証、アカウントロックアウト、セキュリティスタンプの機能が追加された。更に、パスワード検証とバグフィックスも伴っている。
二要素認証の導入に伴い、従来のSMSやe-mailベースの検証でなく、開発者はカスタムプロバイダを利用したユーザアカウントの保護が可能となる。例えば、QRコード生成といったカスタムプロバイダを作成することが可能となり、Authenticator アプリケーションを活用した検証を利用できる。
関連するユーザアカウントから、自動で不正なパスワードや二要素を入力するコードを自動的に実施するブルートフォース様な攻撃に対する保護を得るため、ASP.NET Identity 2.0 が更新された。開発者向けには、不正な入力回数や時間間隔をもとにユーザアカウント単位で無効化する機能を提供している。
新たに紹介されたセキュリティ機能では、アプリケーションに関連付けられたパスワードやソーシャルログインが変更された場合にログアウトする機能が提供される。 Startup.Auth.cs 内で CookieAuthenticationProvider を登録することで設定可能であり、公式であるMSDNブログで紹介されている。
直近のリリースではフックの拡張を備えており、ユーザテーブルとロールテーブルのプライマリキーを指定することで、アプリケーションにより UserId を GUID や int で格納することが容易となる。
直近のリリースに先んじて、ユーザは UserManager を利用して削除することが可能であり、DeleteAsyn() 関数を利用してユーザを削除することが確定している。
var result = await UserManager.DeleteAsync(user);
直近のリリースでは、OWIN コンテキストから SignIn と SignOut 向けの UserManager のファクトリ実装を活用したインスタンスを利用しての検索が可能となっている。同機能を利用するためには、以下の StartupAuth.cs コードを加える必要がある。
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
DbContextFactory ミドルウェアはリクエスト毎の ApplicationDbContext インスタンスを返すため、アプリケーション内でインスタンス利用することが可能であり、以下の StartupAuth.cs コードを利用して設定が可能である。
app.CreatePerOwinContext(ApplicationDbContext.Create);
強化されたパスワード検証に加え、Microsoft は Username に IndexAttribute を利用した固有のインデックスを追加した。同リリースでは NuGet パッケージとして ASP.NET MVC のサンプルアプリケーションを提供しており、更にコミュニティフィードバックをもとにバグフィックスを行っている。
ASP.NET Identity 2 RTM版と並び、Microsoft は Entity Framework 6.1 をリリースしており、ツール統合化、IndexAttribute、マッピング API が公開されたことに加えて .ToString や String.Concat や Enum.HasFlags を LINQ クエリでサポートし、App/Web.config ファイルを通してインターセプタを設定できる。
Microsoft の Software Engineer である Pranav Rastogi 氏のブログ投稿にて、ASP.NET Identity 1 から 2.0 beta 1 への移行方法が記載されている。本リリースでは、上記の機能に加え、2013年12月にリリースされたprebiew で追加されたアカウント確認、パスワードリセット、UsersStore と RolesStore での IQueryable 利用が実装された。