コンテンツにスキップ

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

[編集]

付録

[編集]

用語集

[編集]

参考資料とリンク

[編集]