ASP.NET Core/Identity

出典: フリー教科書『ウィキブックス(Wikibooks)』

ASP.NET Core Identityは、ASP.NET Coreアプリケーションにユーザー認証と承認の機能を提供するフレームワークです。

はじめに[編集]

ASP.NET Core Identityとは[編集]

ASP.NET Core Identityは、ASP.NET Coreアプリケーションにユーザー認証と承認の機能を提供するフレームワークです。従来の ASP.NET Membership Systemの後継にあたるものです。

ASP.NET Core Identityは、ユーザー登録、ログイン、ログアウト、パスワード管理、ロールベースのアクセス制御 (RBAC) など、一般的な認証/承認機能を統合的に提供します。開発者は、これらの機能を容易に組み込むことができます。

主な機能と利点[編集]

ASP.NET Core Identityの主な機能と利点は以下の通りです:

  • ユーザー管理: ユーザーの登録、プロファイル管理、パスワード変更などの基本的な機能を提供します。
  • 認証: ユーザーのログイン、ログアウト、クレーム管理などの認証機能を提供します。
  • 承認: ロールやクレームに基づいたアクセス制御を実現できます。
  • 拡張性: ユーザーエンティティやクレームなどをカスタマイズできるため、アプリケーションの要件に合わせて機能を拡張できます。
  • セキュリティ: パスワードのハッシュ化、アカウントロックアウト、2段階認証などのセキュリティ機能を備えています。
  • 統合性: ASP.NET Coreのその他の機能(Logging、DI、設定管理など)と統合されています。

ハンドブックの目的と対象読者[編集]

このハンドブックの目的は、ASP.NET Core Identityの基本的な使用方法から、高度な活用方法まで、開発者が必要とする包括的な情報を提供することです。

主な対象読者は以下の通りです:

  • ASP.NET Coreアプリケーションの開発者
  • 認証/承認機能の実装に携わるエンジニア
  • ユーザーマネジメントの設計に関わるアーキテクト
  • ASP.NET Core Identityを導入検討しているプロジェクトメンバー

基本セットアップ[編集]

プロジェクトへのIdentity SDKの追加[編集]

ASP.NET Core Identityを使用するには、まず対象のプロジェクトにIdentity SDKを追加する必要があります。Visual Studioを使用している場合は、ソリューションエクスプローラーから該当のプロジェクトを右クリックし、「管理NuGetパッケージ」を選択します。 "Microsoft.AspNetCore.Identity.EntityFrameworkCore"パッケージをインストールすることで、必要な参照が追加されます。

IdentityServiceCollectionExtensionsの設定[編集]

次に、StartupクラスのConfigureServicesメソッドで、Identity機能を設定する必要があります。 以下のように、AddIdentityメソッドを呼び出して、ユーザー、ロール、ストア、パスワードポリシーなどを構成します。

public void ConfigureServices(IServiceCollection services)
{
    services.AddIdentity<IdentityUser, IdentityRole>(options =>
    {
        // パスワードポリシーの設定
        options.Password.RequireDigit = true;
        options.Password.RequiredLength = 8;
        // その他の設定
    })
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

    // その他のサービス設定
}

基本的な認証/承認の構成[編集]

最後に、StartupクラスのConfigureメソッドで、認証とアクセス制御の設定を行います。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 他の設定
    
    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoutes();
    });
}

これらの設定により、ユーザーの認証とアクセス制御が有効になります。 コントローラーやビューで、[Authorize]属性を使ってアクセス制限を設定できるようになります。

この基本セットアップの後は、ユーザー管理や高度な認証/承認機能の実装に進むことができます。

ユーザーアカウントの管理[編集]

ユーザーエンティティの定義[編集]

ユーザー登録[編集]

ユーザーログイン/ログアウト[編集]

パスワードの管理[編集]

2段階認証[編集]

ロールと権限管理[編集]

ロールの定義と割当て[編集]

権限の設定[編集]

ロールベースのアクセス制御 (RBAC)[編集]

外部認証プロバイダーの統合[編集]

Facebookや Googleなどの外部プロバイダーとの連携[編集]

ソーシャルログイン機能の実装[編集]

カスタマイゼーション[編集]

ユーザーインターフェイスのカスタマイズ[編集]

検証ロジックのカスタマイズ[編集]

クレームの拡張[編集]

セキュリティとプライバシー[編集]

パスワードのハッシュ化と塩付け[編集]

アカウントロックアウト[編集]

HTTPS/SSL の設定[編集]

GDPR対応[編集]

高度な機能[編集]

ユーザーセッションの管理[編集]

リフレッシュトークンの実装[編集]

JWT (JSON Web Tokens) の利用[編集]

トラブルシューティングとベストプラクティス[編集]

一般的な問題と解決策[編集]

ASP.NET Core Identityの使用に関するアドバイス[編集]

付録[編集]

用語集[編集]

参考資料とリンク[編集]