ASP.NET Core Identity を理解する
- 5 分
このユニットでは、Identity のアーキテクチャについて理解を深めます。
ASP.NET Core Identity のアーキテクチャ
ASP.NET Core Identity は、ASP.NET Core Web UI にユーザー登録とサインインの機能を追加するメンバーシップ システムです。 メンバーシップ システムでは、認証と認可の両方の問題が処理されます。 認証は、ユーザーは誰であるか、ということに関係します。 承認は、許可されている操作に関係します。 そのため、認証は認可に対する前提条件となります。
ローカル アカウントの作成の代わりに、ID は Facebook や X などの外部サインイン プロバイダーに対応しています。ユーザー セッションは Cookie ベースの認証を使用して保持されます。 既定では、Cookie がサインイン時に作成され、サインアウト時に破棄されます。
メンバーシップ データは、ユーザーが選択したデータ ストアとデータ アクセス テクノロジを使用して保持されます。 既定のデータ アクセス テクノロジは、Entity Framework (EF) Core と呼ばれるオブジェクト リレーショナル マッパー (O/RM) です。 既定のデータ ストアは SQL Server です。
EF Core によって、基になるデータベースとの対話の複雑さが抽象化されます。 したがって、通常、EF Core により、その任意のデータベース プロバイダーを Identity で使用できるようになります。 データベース プロバイダーは、SQL Server、SQLite、および他のいくつかのデータ ストアで使用できます。 また、Identity では、ユーザーが選択したデータ アクセス テクノロジを柔軟に使用することもできます。 Dapper は、代わりによく使用されるものの 1 つです。
次の図では、このモジュールで使用される Identity のアーキテクチャを示します。
Identity のアーキテクチャを示す図。
前の図で:
- ASP.NET Core Razor Pages アプリは、このモジュールで Identity のサポートが追加される Web UI を表します。
- Identity Manager レイヤーには、
Microsoft.AspNetCore.Identity
名前空間から使用されるクラスが含まれています。 このモジュールで明示的に使用される、そのようなクラスの例として、SignInManager<TUser>
やUserManager<TUser>
があります。 - EF Core Identity Store レイヤーには、
Microsoft.AspNetCore.Identity.EntityFrameworkCore
名前空間からのクラスが含まれています。 このモジュールで暗黙的に使用される、そのようなクラスの例として、UserStore<TUser>
があります。 - "データベース プロバイダー" はデータベース固有のライブラリであり、"EF Core プロバイダー" (図には示されていません) から SQL を受け取って、それを実行します。
EF Core では、移行という機能を使用してデータベース スキーマを増分更新し、アプリのデータ モデルとの同期を維持します。 サポート データベース テーブルは、最初の EF Core 移行を適用した後に作成されます。 次の図では、サポート テーブルのスキーマを示します。
注
上の図は、データベース内のキーとリレーションシップを示しています。 キーが一で、無限大 (横向きの 8) が多となっています。 データベースは、一対一、一対多、および多対多のリレーションシップの種類となるように設定できます。 キーは一意です。 図には、これらの結合の作成方法とリレーションシップが示されています。
まとめ
このユニットでは、ASP.NET Core Identity アーキテクチャについて学習しました。 次のユニットでは、既定の ASP.NET Core Identity の実装を既存のアプリに追加します。