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の使用に関するアドバイス 編集

付録 編集

用語集 編集

参考資料とリンク 編集