基本的にはこちらを見れば書いてありますが、記述がwebapp(Razor Pages)ベースだったり(私はMVCで使いたい)、ちょっとわかりにくいので動作検証。
環境など
- Mac上でdotnet 5.xを利用しています。(が、他の環境、3.1.xでも動くと思います)
プロジェクト生成
dotnet new mvc --auth Individual -o identity_mvc_test
cd identity_mvc_test
現在、dotnet new コマンドで生成できる認証テンプレートは[Individual]のみのようですが、カスタマイズすれば他の認証にも対応可能なようです。
何もオプションを指定しないとsqliteが利用されるようです。 -uld オプションをつけるとlocalDB(簡易SQL)で生成されるようです。
各種認証用DBの生成
プロジェクト生成時に何もオプションを指定しないとsqliteベースでDBが作られるみたいです。
生成ファイル群を見るとマイグレーションとかしてないのにapp.dbってのが作られてますね。
中身を少し確認
sqliteにログインして、テーブルを表示してみます。Identityが利用する各種テーブルが作られていますね。
sqlite3 app.db
sqlite> .table
AspNetRoleClaims AspNetUserLogins AspNetUsers
AspNetRoles AspNetUserRoles __EFMigrationsHistory
AspNetUserClaims AspNetUserTokens
sqliteから抜けるには.exitと入力します。
動作を確認
dotnet run
TOPページ
では実行されたページにアクセスしてみます。標準では http://localhost:5001 です。
MVCのテンプレートにRegister, Loginボタンが追加されています。
SSL/TLSを利用する場合は dotnet dev-certs https --trust で証明書をインストールしておく必要があります。
Registerページ
ではRegisterリンクをクリックしてみます。すると登録用のページが表示されます。
登録してみましょう。
登録後はEmailの(架空)コンファームが必要なようなのでクリックします。
実際のアプリでは確認メールが送信され、送信されたメール中の確認リンクをクリックすることになります。
sqliteのAspNetUsersにデータが記録されていることを確認してみましょう。
Loginページ
では、次にLoginリンクをクリックします。するとログイン画面が現れるので先程登録したID,PWでログインしてみてください。
このとき、パスワード忘れ対応のリンク等も生成されていることが確認できます。
ログイン後ページ
ログインすると、右上のヘッダ部にログインユーザー名が表示され、LoginリンクはLogoutリンクへと変化します。
ユーザー名をクリックするといわゆるMyPage的な内容が表示され内容の変更・確認やMFA等の雛形が実装されています。
一旦まとめ
Identityおよびそのテンプレートを利用すれば近代的Webサービスにおいて必要となる認証・認可機能の基本部分をひな形として生成してくれます。一方で、各機能を理解し、使いこなす(カスタマイズする)ためには一定の知識と慣れが必要となります。まずは雛形のコードを眺めながら不明な点を1つ1つ調査するとよいでしょう。