Asp.net-core-identity-configuration
ASP.NET Core-ID設定
この章では、Identityフレームワークをインストールして構成しますが、これには少しの作業が必要です。 Visual Studioに移動して新しいASP.NET Coreアプリケーションを作成し、個々のユーザーアカウントに認証を設定した完全なWebアプリケーションテンプレートを選択すると、その新しいプロジェクトにはセットアップされたIdentityフレームワークのすべての部分が含まれます。
空のプロジェクトから始めました。 これからIdentityフレームワークをゼロからセットアップします。これは、完全なアプリケーションテンプレートに含まれるすべての要素について学ぶのに適した方法です。すべてのコードを詳細に処理していないと混乱する可能性があるためです。
開始するには、依存関係( Microsoft.AspNet.Identity )をインストールする必要があります。 Microsoft.AspNet.Identity.EntityFramework をインストールしてから、Entity Frameworkと連携するIdentityフレームワークを実装します。
- Identity.EntityFrameworkに依存する場合、パッケージにはIdentityパッケージが含まれます。
- 独自のデータストアを構築する場合は、Identityパッケージだけで作業できます。
- 依存関係がインストールされると、ユーザーについて保存したいすべての情報を含むカスタマーUserクラスを作成できます。
- このアプリケーションでは、Identityフレームワークによって提供されるクラスを継承します。このクラスは、Usernameプロパティやハッシュされたパスワードを保存する場所など、すべての重要な要素を提供します。
- また、 FirstAppDemoDbContext クラスを変更して、Identityフレームワークの IdentityDb クラスから継承する必要があります。
- IdentityDbは、Entity Frameworkでユーザー情報として保存する必要があるすべてのものを提供します。 Userクラスと DBContext を設定したら、Startupクラスの ConfigureServices メソッドを使用して、アプリケーションにIdentityサービスを設定する必要があります。
- MVCフレームワークをサポートするためにサービスを追加する必要があるときと同じように、Identityフレームワークが機能するためには、アプリケーションに追加されたサービスが必要です。
- これらのサービスには、 UserStore サービスや SignInManager などのサービスが含まれます。
- これらのサービスをコントローラーに注入して、ユーザーを作成し、適切なタイミングでCookieを発行します。
- 最後に、スタートアップのConfigureメソッド中に、Identityミドルウェアを追加する必要があります。
- このミドルウェアは、CookieをユーザーIDに変換するのに役立つだけでなく、ユーザーに401応答のある空のページが表示されないようにします。
以下の手順に従ってください。
- ステップ1 *-Identityフレームワークへの依存関係を追加して先に進む必要があります。 Microsoft.AspNet.Identity.EntityFramework依存関係をproject.jsonファイルに追加しましょう。 これには、必要な他のすべてのIdentityパッケージが含まれます。
- ステップ2 *-このファイルを保存します。 Visual Studioがパッケージを復元し、Userクラスを追加できるようになりました。 Modelsフォルダーを右クリックし、追加→クラスを選択して、Userクラスを追加しましょう。
このクラスをUserと呼び、上のスクリーンショットのように[追加]ボタンをクリックします。 このクラスでは、ユーザーについて保存する情報を保持するプロパティを追加できます。
- ステップ3 *-Identityフレームワークによって提供されるクラスからUserクラスを派生させましょう。 Identity.EntityFramework名前空間にあるのはIdentityUserクラスです。
ステップ4-IdentityUserに移動して、そのシンボルにカーソルを置き、F12を押してVisual Studioのメタデータビューを表示します。
- ステップ5 *-IdentityUserは文字列のIdentityUserから派生していることがわかります。 IdentityUserから派生し、ジェネリック型パラメーターを指定することにより、主キーの型を変更できます。 理想的には整数値である主キーを使用して物事を保存することもできます。
- ステップ6 *-文字列のIdentityUserにカーソルを置き、もう一度F12を押してメタデータビューに移動します。
これで、デフォルトでユーザーに関連するすべての情報を表示できます。 情報には次のものが含まれます-
- このアプリケーションでは使用しませんが、使用可能なフィールド。
- Identityフレームワークは、特定のユーザーのログイン試行の失敗回数を追跡し、そのアカウントを一定期間ロックすることができます。
- PasswordHash、PhoneNumberを保存するフィールド。 使用する2つの重要なフィールドは、PasswordHashとUserNameです。
- また、ユーザーの主キーとIDプロパティを暗黙的に使用します。 特定のユーザーを照会する必要がある場合にも、そのプロパティを使用できます。
ステップ7 *-次に、ユーザーがDBContextに含まれていることを確認する必要があります。 そのため、アプリケーションにある *FirstAppDemoDBContext を開き、組み込みのEntity FrameworkベースクラスであるDBContextから直接派生する代わりに、IdentityDbContextから派生する必要があります。
- ステップ8 *-IdentityDbContextクラスもMicrosoft.AspNet.Identity.EntityFramework名前空間にあり、格納するユーザーの種類を指定できます。 このようにして、Userクラスに追加する追加フィールドはすべてデータベースに入ります。
- IdentityDbContextは、ユーザーを保存するだけでなく、ユーザーロールとユーザー要求に関する情報も保存するために、追加のDbSetを提供します。
- Userクラスの準備ができました。 FirstAppDemoDbContextクラスは、Identityフレームワークと連携するように構成されています。
- これで、ConfigureおよびConfigureServicesに進み、Identityフレームワークをセットアップできます。
ステップ9 *- *ConfigureServices から始めましょう。 MVCサービスとEntity Frameworkサービスに加えて、IDサービスを追加する必要があります。 これにより、Identityフレームワークが作業を行うために依存するすべてのサービスが追加されます。
- AddIdentityメソッドは、ユーザーエンティティのタイプとロールエンティティのタイプの2つの汎用タイプパラメータを取ります。
- 2つのジェネリック型パラメーターは、ユーザーの型です。作成したばかりのUserクラスと、操作するRoleクラスです。 ここで、組み込みのIdentityRoleを使用します。 このクラスは、EntityFramework名前空間にあります。
- IdentityでEntity Frameworkを使用している場合、AddEntityFrameworkStoresという2番目のメソッドも呼び出す必要があります。
- AddEntityFrameworkStoresメソッドは、ユーザーの作成とパスワードの検証に使用されるサービスであるUserStoreなどのサービスを構成します。
- ステップ10 *-次の2行は、アプリケーションのサービスを構成するために必要なすべてです。
- ステップ11 *-ミドルウェアも追加する必要があります。 ミドルウェアを挿入する場所は重要です。パイプラインの後半にミドルウェアを挿入すると、リクエストを処理する機会がなくなるためです。
また、MVCコントローラー内で承認チェックが必要な場合は、Cookieと401エラーが正常に処理されるように、MVCフレームワークの前にIdentityミドルウェアを挿入する必要があります。
- ステップ12 *-ミドルウェアを挿入する場所は、IDミドルウェアを追加する場所です。 以下は、Startup.csファイルの完全な実装です。
- ステップ13 *-アプリケーションを作成して先に進みましょう。 次の章では、別のEntity Framework移行を追加して、SQL ServerデータベースにIdentityスキーマがあることを確認する必要があります。