MSAL.NET のバージョンの選択

Important

2025 年 5 月 1 日より、Azure AD B2C は新規顧客向けに購入できなくなります。 詳細については、FAQ を参照してください

構築するアプリケーションの種類とその基になるプラットフォームに応じて、MSAL.NET、Microsoft Identity Web、またはその両方を使用できます。

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

次のデシジョン ツリーに従って、シナリオで MSAL.NET、Microsoft Identity Web、またはその両方が必要かどうかを判断します。

.NET認証ライブラリを使用するときのデシジョン ツリーの画像

MSAL.NET を使用するタイミング

デスクトップまたはモバイル アプリを構築している。 MSAL.NET を直接使用し、パブリック クライアント アプリケーションのトークンの取得を開始します。 詳細については、次のページを参照してください。

Microsoft Identity Web を使用する

ASP.NET Core、ASP.NET OWIN、または .NET フレームワーク/.NET Core で実行されている機密クライアント アプリケーション (Web アプリ、Web API、デーモン/サービス アプリ) を構築しています。 Identity Web が提供するMicrosoftを確認します。

  • Microsoft Entra ID、Azure AD B2C、および Microsoft Entra 外部 ID アプリケーションで Web アプリ経由でユーザーをサインインする
    • 個人アカウントMicrosoftサポートする
    • ゲスト ユーザーのサポート
    • Web アプリでの増分同意と条件付きアクセス
    • SameSite の処理
    • "App Services 認証" と統合されます
    • 機密クライアント アプリケーションの PKCE をサポート
    • 分散を含む、パフォーマンスの高いトークン キャッシュ シリアライザーを提供します
  • Web API を保護する (Microsoft Entra ID、Azure AD B2C、またはMicrosoft Entra 外部 IDを使用)
    • 発行者 (マルチテナント 内アプリ、任意のクラウドを含む) を検証します。
    • では、Web API のトークン暗号化解除証明書がサポートされます
    • Web API のスコープとアプリロールを検証します
    • API (CA、CAE) で WWW-authenticate ヘッダーを生成します
    • gRPC サービスとAzure関数を保護する
  • ダウンストリーム API を呼び出す Web アプリ/API (B2C を除くグラフを含む)
  • ASP.NET Coreで複数の認証スキームをサポート
  • 所有証明プロトコルをサポート
  • 回復性 (トークン バックアップ システムのリージョントークン取得とルーティング ヒントをサポート)

新しいアプリケーションをビルドする

Project テンプレートとmsidentity-app-sync ツールを使用します。 Web MVC、Razor、Blazor サーバー、Blazorwasm 用の Web アプリ テンプレートがホストされ、ホストされていません。 すべて Microsoft Entra ID または Azure AD B2C 用。

Web アプリを構築するための ASP.NET Core プロジェクト テンプレートを示す画像

Web アプリ プロジェクト テンプレート

gRPC とAzure Functions用の Web API テンプレートがあります。

Web API プロジェクト テンプレート

ここでは、msidentity-app-sync-tool を実行する方法について説明します。これは、テナント (Microsoft Entra ID または Azure AD B2C) にMicrosoft ID プラットフォーム アプリケーションを作成し、ASP.NET Core アプリケーションの構成コードを更新するコマンド ライン ツールです。 このツールを使用して、既存のMicrosoft Entra アプリケーションまたは AD B2C アプリケーションAzureコードを更新することもできます。

NuGet で使用できます。

既存のアプリに認証を追加しているか、ADAL から移行しています

アプリを更新するために必要なコードMicrosoft Identity Web から取得するだけです。 次に例を示します。

Web API を呼び出す Web アプリをビルドするときのコードの更新を示す画像

B2C Web アプリまたは API をビルドするときのコードの更新を示す画像

ユーザーと保護された Web API をサインインさせる B2C Web アプリのコード更新を示す画像

ダウンストリーム API を呼び出す Web アプリまたは Web API のコード更新を示す画像

ハイブリッド モデル (MSAL.NET と Microsoft Identity Web) を使用するタイミング

機密クライアント アプリケーション用の SDK を構築しており、低レベルの API MSAL.NET 使用したいと考えています。 MSAL.NET では、メモリ内トークン キャッシュが既定で提供されますが、Web アプリまたは Web API の場合、キャッシュは、正しくパーティション分割する必要があるため、パブリック クライアント アプリケーション (デスクトップまたはモバイル アプリ) の場合とは異なる方法で管理する必要があります。 分散キャッシュ、(Redis、Cosmos、SQL Server、メモリ キャッシュに分散など)、メモリ キャッシュに正しくパーティション分割されたトークン キャッシュ シリアライザーを利用することを強くお勧めします。

トークン キャッシュ シリアライザーを使用すると、キャッシュがストレージと MSAL のメモリ間でスワップされるため、使用されるキャッシュ キーに応じてトークン キャッシュをパーティション分割します。 このキャッシュ キーは、使用するフローの関数として MSAL.NET によって計算されます

カスタム シリアライザーの有無に関係なくトークン キャッシュを示す画像

Microsoftが必要な理由。Identity.Web.TokenCache?

Microsoft。Identity.Web.TokenCache では、トークン キャッシュのシリアル化が提供されます。 詳細については、 トークン キャッシュのシリアル化 に関するページを参照してください。

Web アプリと Web API にトークン キャッシュを使用する方法の例については、フェーズ 2-2 トークン キャッシュASP.NET Core Web アプリのチュートリアルを参照してください。 実装については、Microsoftの TokenCacheProviders フォルダーを参照してください。Identity.Web リポジトリ。

Microsoft Identity Web は、証明書の読み込みにも役立ちます。