【T8b】ASP.NET Core Identity の基礎(3/9)
| プロジェクトタイプ | (注意: 本文参照) | 
|---|---|
| プロジェクト名 | T8b | 
| ソリューション名 | PIT8 | 
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
 - プロジェクトの作成作業については準備作業を参照せよ.
 
 
8b-3. ASP.NET Core Identity の概要
ASP.NET Core Identity は Entity Framework Core を利用したユーザー認証のための仕組みである. ASP.NET Core Identity は内部的に_,_に示す 7個のエンティティを使用する.ただし ASP.NET Core Identity ではこれらのエンティティを,ここまでの例のような方法で 直接的に操作するのではなく, ユーザー管理用のクラスや ロール管理用のクラス, サインイン管理のためのクラス といったクラスを通じて操作する必要がある.
| エンティティ | 対応するテーブル名 | 役割 | 
|---|---|---|
| IdentityUser | AspNetUsers | ユーザー情報. | 
| IdentityRole | AspNetRoles | ロール(役割).グループのようなもの. | 
| IdentityUserRole | AspNetUserRoles | ユーザーのロールへの所属情報. | 
| IdentityUserClaim | AspNetUserClaims | ユーザー識別のための情報群. | 
| IdentityUserLogin | AspNetUserLogins | ユーザごとのログイン方法. | 
| IdentityUserToken | AspNetUserTokens | 認証トークン(一時的な情報). | 
| IdentityRoleClaim | AspNetUserClaims | グループ識別のための情報群. | 
ASP.NET Core Identity には2種類の使用方法がある(_).
1つの使用方法は アプリケーション内で2つのデータコンテキストクラスを管理する 方法である. ここまでの例では,各アプリケーション内にデータコンテキストクラスを1つだけ定義して利用していたが, 実は ASP.NET Core では1つのアプリケーション内で複数のデータコンテキストクラスを管理することが可能である. 通常は理由がない限り複数のデータコンテキストクラスを使う必要はないが,この方法では_に 示すエンティティを管理するためのデータコンテキストクラス──つまりは ASP.NET Core Identity 用のデータコンテキストクラス と, それとは別に アプリケーションの独自のロジックで必要となるエンティティを管理するデータコンテキストクラスを用意して これらを使ってアプリケーションそのものの機能と認証の実装を行う.
もう1つの使用方法は, アプリケーションの独自のデータコンテキストクラスにASP.NET Core Identity 用のデータコンテキストクラスを組み込む 方法である. _を見てわかるように ASP.NET Core Identity 用のデータコンテキストには,「ユーザー」や「ロール(≒グループ)」, 「グループ所属」といった基本的なエンティティが含まれている.この方法の利点は,こういった基本的なエンティティをそのまま アプリケーション内で利用できる点である.例えばブログアプリであれば「記事の著者」,社員管理のためのグループウェアであれば「社員」 といったエンティティを ASP.NET Core Identity の「ユーザー」を拡張して定義する,といった利用が可能である.
通常のウェブアプリではユーザーの管理を行うことが多いため,どちらかといえば後者の方法が ASP.NET Core Identity の 使用方法としては一般的であるが今回は1つ目の利用方法を試みることにする.


