Microsoft Identity Web 認証ライブラリ

Microsoft Identity Web は一連の ASP.NET Core ライブラリで、これにより、Microsoft ID プラットフォームと統合される Web アプリおよび Web API への認証および承認サポートの追加が簡略化されます。 ASP.NET Core、その認証ミドルウェア、.NET 用の Microsoft Authentication Library (MSAL) を結び付ける単一サーフェス API の便利なレイヤーを提供します。

Microsoft.Identity.Web は、NuGet から取得することも、Visual Studio プロジェクト テンプレートを使用して新しいアプリ プロジェクトを作成して取得することもできます。

サポートされているアプリケーション シナリオ

ASP.NET Core Web アプリまたは Web API をビルドしていて、ID とアクセスの管理 (IAM) に Azure Active Directory (Azure AD) または Azure AD B2C を使用する場合は、次のすべてのシナリオで Microsoft Identity Web を使用することをお勧めします。

NuGet からインストールする

Microsoft Identity Web は、アプリのニーズに応じたモジュール型機能を提供する一連のパッケージとして、NuGet で入手できます。 .NET CLI の dotnet add コマンドまたは Visual Studio の NuGet パッケージ マネージャーを使用して、プロジェクトに適したパッケージをインストールします。

Visual Studio プロジェクト テンプレートを使用してインストールする

Microsoft Identity Web を使用するいくつかのプロジェクト テンプレートは、.NET SDK バージョン 5.0 以降に含まれています。 プロジェクト テンプレートは、ASP.NET Core 3.1 SDK には含まれていませんが、個別にインストールできます。

.NET 5.0 以降 - 含まれているプロジェクト テンプレート

Microsoft Identity Web プロジェクト テンプレートは、.NET SDK バージョン 5.0 以降に含まれています。

この .NET CLI コマンドの例では、Microsoft Identity Web を含む Blazor Server プロジェクトを作成します。

dotnet new blazorserver --auth SingleOrg --calls-graph --client-id "00000000-0000-0000-0000-000000000000" --tenant-id "11111111-1111-1111-1111-111111111111" --output my-blazor-app

.NET SDK 5.0 以降に含まれるテンプレートを使用している場合は、アプリケーションの型引数 (この例では blazorserver) に 2 を追加しないでください。 2 サフィックスを含めるのは、ASP.NET Core 3.1 を使用していて、次のセクションで説明するようにテンプレートを個別にインストールした場合 "のみ" です。

ASP.NET Core 3.1 - プロジェクト テンプレートをインストールする

ASP.NET Core 3.1 を使用している場合は、NuGet からプロジェクト テンプレートをインストールします。

dotnet new --install Microsoft.Identity.Web.ProjectTemplates

ASP.NET Core 3.1 の場合に "のみ"、新しいプロジェクトを作成するときに、アプリケーションの型引数に 2 を追加します。

dotnet new blazorserver2 --auth SingleOrg --calls-graph --client-id "00000000-0000-0000-0000-000000000000" --tenant-id "11111111-1111-1111-1111-111111111111" --output my-blazor-app

次の図は、使用可能なアプリの種類のテンプレートとその引数の一部を示しています。 ASP.NET Core 3.1 SDK を使用していて、dotnet new --install を使用してテンプレートをインストールした場合にのみ、アプリの型引数 (この例では blazorserver2) に 2 を追加します。

Diagram of the available dot net CLI project templates for Microsoft Identity Web
*MultiOrgwebapi2 ではサポートされていませんが、テナントを common または organizations に設定することにより、appsettings.json で有効にできます
**--calls-graph は、Azure AD B2C ではサポートされていません

プロジェクト テンプレートの機能

Microsoft Identity Web には、既定の ASP.NET 3.1 プロジェクト テンプレートでは使用できないいくつかの機能が含まれています。

機能 ASP.NET Core 3.1 Microsoft Identity Web
Web アプリでのユーザーのサインイン
  • 職場または学校アカウント
  • ソーシャル ID (Azure AD B2C)
  • 職場または学校アカウント
  • 個人用 Microsoft アカウント
  • ソーシャル ID (Azure AD B2C)
  • Web API の保護
  • 職場または学校アカウント
  • ソーシャル ID (Azure AD B2C)
  • 職場または学校アカウント
  • 個人用 Microsoft アカウント
  • ソーシャル ID (Azure AD B2C)
  • マルチテナント アプリでの発行者の検証 いいえ はい (すべてのクラウドAzure AD B2C)
    Web アプリ/API から Microsoft Graph を呼び出す いいえ はい
    Web アプリ/API から Web API を呼び出す いいえ はい
    証明書資格情報のサポート いいえ はい (Azure Key Vault を含む)
    Web アプリでの増分同意と条件付きアクセスのサポート いいえ はい (MVC、Razor ページ、Blazor)
    Web API でのトークン暗号化証明書 いいえ はい
    Web API での [スコープ/アプリ ロールの検証] いいえ はい
    Web API での WWW-Authenticate ヘッダーの生成 いいえ はい

    次の手順

    Microsoft ID Web の動作を確認するには、次の Blazor Server のチュートリアルをお試しください。

    チュートリアル: 認証に Microsoft ID プラットフォームを使用する Blazor Server アプリを作成する

    GitHub の Microsoft Identity Web wiki には、ライブラリのさまざまな側面に関する広範なリファレンス ドキュメントが含まれています。 たとえば、証明書の使用状況、増分同意、条件付きアクセスのリファレンスは、次の場所にあります。