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 を使用することをお勧めします。
- ユーザーをサインインさせる Web アプリ
- ユーザーをサインインさせ、そのユーザーに代わって Web API を呼び出す Web アプリ
- 認証されたユーザーのみアクセスできる、保護された Web API
- サインイン ユーザーの代わりに別の (ダウンストリーム) Web API を呼び出す、保護された Web API
NuGet からインストールする
Microsoft Identity Web は、アプリのニーズに応じたモジュール型機能を提供する一連のパッケージとして、NuGet で入手できます。 .NET CLI の dotnet add
コマンドまたは Visual Studio の NuGet パッケージ マネージャーを使用して、プロジェクトに適したパッケージをインストールします。
- Microsoft.Identity.Web - メイン パッケージ。 Microsoft Identity Web を使用するすべてのアプリに必要です。
- Microsoft.Identity.Web.UI - 省略可能。 Web アプリに対するユーザーのサインインとサインアウトおよび関連付けられているコントローラーの UI を追加します。
- Microsoft.Identity.Web.MicrosoftGraph - 省略可能。 Microsoft Graph API との簡単な対話機能を提供します。
- Microsoft.Identity.Web.MicrosoftGraphBeta - 省略可能。 Microsoft Graph API ベータ版エンドポイントとの簡単な対話機能を提供します。
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
を追加します。
*MultiOrg
は webapi2
ではサポートされていませんが、テナントを 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 アプリでのユーザーのサインイン | ||
Web API の保護 | ||
マルチテナント アプリでの発行者の検証 | いいえ | はい (すべてのクラウドと 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 には、ライブラリのさまざまな側面に関する広範なリファレンス ドキュメントが含まれています。 たとえば、証明書の使用状況、増分同意、条件付きアクセスのリファレンスは、次の場所にあります。
- Microsoft.Identity.Web での証明書の使用 (GitHub)
- 増分同意と条件付きアクセス (GitHub)