ASP.NET 5とは
2015年7月20日にリリースされた最新のVisual Studio 2015には、「ASP.NET 5」のプレビュー版のプロジェクトを作成できる機能が搭載されています。
ASP.NET 5とは主に次のような機能を持ち、従来のASP.NETとは別に新たにオープンソースで開発が進められています。
クロスプラットフォーム
Windowsに限らず、LinuxやMac OS X上でもMonoや.NET Coreを使って動作する。
IISに依存しない
OWINの概念をもとに新たに実装したミドルウェア、パイプライン処理で処理を行う。
サービス単位のDI
標準で「サービス」という単位でDI(Dependency Injection、依存性の注入)を行う機能を搭載する。
非同期
すべての処理がasync/awaitを活用した非同期処理として行われる。
詳しくは参考資料1)、2)などを参考にしてください。なお、あくまでプレビュー版であるため、まだまだ今後変更される可能性があります。最新情報はGitHub上の各種リポジトリを確認してください。
ASP.NET 5におけるASP.NET Identity
ASP.NET 5ではASP.NET Identityもバージョン3.0になり、新たに実装しなおされています。バージョン2.xまでのOWINのパイプライン処理をベースとした実装ではなく、ASP.NET 5のパイプライン処理をベースに実装されています。
この結果、バージョン2.x向けに独自に実装したコードとの互換性が無くなってしまいました。ASP.NET 5でも既存コードを利用したい場合、バージョン3.0向けに再実装する必要があります。ただ、主要なAPIはそれほど変更されていないため、移植は比較的容易に行えます。
なお、ASP.NET 5向けのASP.NET Identityは、ASP.NET 5本体と同様にGitHub上にてオープンソースで開発が進められています。最新コードはGitHubのリポジトリを参照してください。なお、ASP.NET 5はあくまでプレビュー版であり、正式リリース時には変更される可能性があることはご了承ください。
それでは、ASP.NET 5におけるASP.NET Identity利用のポイントを、VS2015で作成したASP.NET 5のプレビュープロジェクトを使って説明していきましょう。
使用するNuGetパッケージ
まずは、ASP.NET Identityを利用するのに必要なNuGetパッケージを見ていきましょう。使用しているNuGetパッケージは、project.jsonファイルの"dependencies"キーの値を確認します(リスト1)。
{ ...(略)... "dependencies": { "EntityFramework.SqlServer": "7.0.0-beta5", "EntityFramework.Commands": "7.0.0-beta5", "Microsoft.AspNet.Mvc": "6.0.0-beta5", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta5", "Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta5", "Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta5", "Microsoft.AspNet.Authentication.Google": "1.0.0-beta5", "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta5", "Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta5", "Microsoft.AspNet.Diagnostics": "1.0.0-beta5", "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta5", "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta5", "Microsoft.AspNet.Server.IIS": "1.0.0-beta5", "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5", "Microsoft.AspNet.StaticFiles": "1.0.0-beta5", "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta5", "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta5", "Microsoft.Framework.Configuration.Json": "1.0.0-beta5", "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta5", "Microsoft.Framework.Logging": "1.0.0-beta5", "Microsoft.Framework.Logging.Console": "1.0.0-beta5", "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta5" }, ...(略)... }
ASP.NET Identityを利用するのに必要な主なパッケージは、以下の2つです。
Microsoft.AspNet.Authentication.Cookie
Cookie認証を行うためのNuGetパッケージで、.NET 4.5までのMicrosoft.Owin.Security.Cookiesに対応します。
Microsoft.AspNet.Identity.EntityFramework
EFを用いたユーザー管理を行うためのNuGetパッケージです。
なお、NuGetパッケージの依存関係により、以下のパッケージも併せてインストールされます。
Microsoft.AspNet.Identity
ASP.NET Identityのコアとなる各種インターフェースなどを扱うNuGetパッケージです。バージョンは3.0.0-beta5で、2.xまでのようにOwinパッケージへの依存はありません。