【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つ目の利用方法を試みることにする.