次の方法で共有


Active Directory B2C で使用できるアプリケーションの種類

Von Bedeutung

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

Azure Active Directory B2C (Azure AD B2C) は、さまざまな最新のアプリケーション アーキテクチャの認証をサポートしています。 これらはすべて、業界標準のプロトコルである OAuth 2.0 または OpenID Connect に基づいています。 この記事では、優先する言語やプラットフォームに関係なく、構築できるアプリケーションの種類について説明します。 また、アプリケーションの構築を開始する前に、大まかなシナリオを理解するのにも役立ちます。

Azure AD B2C を使用するすべてのアプリケーションは、Azure portal を使用して Azure AD B2C テナントに登録する必要があります。 アプリケーション登録プロセスでは、次のような値が収集され、割り当てられます。

  • アプリケーションを一意に識別する アプリケーション ID
  • 応答をアプリケーションに戻すために使用できる 応答 URL

Azure AD B2C に送信される各要求は、 ユーザー フロー (組み込みポリシー) または Azure AD B2C の動作を制御する カスタム ポリシー を指定します。 どちらのポリシーの種類でも、高度にカスタマイズ可能な一連のユーザーエクスペリエンスを作成できます。

すべてのアプリケーションの相互作用は、同様の高レベルのパターンに従います。

  1. アプリケーションは、 ポリシーを実行するためにユーザーを v2.0 エンドポイントに誘導します。
  2. ユーザーは、ポリシー定義に従ってポリシーを完了します。
  3. アプリケーションは、v2.0 エンドポイントからセキュリティ トークンを受け取ります。
  4. アプリケーションは、セキュリティ・トークンを使用して、保護された情報または保護されたリソースにアクセスします。
  5. リソース・サーバーは、アクセスを許可できることを確認するために、セキュリティー・トークンを検証します。
  6. アプリケーションは、セキュリティ・トークンを定期的にリフレッシュします。

これらの手順は、構築するアプリケーションの種類によって若干異なる場合があります。

Web アプリケーション

Web サーバーでホストされ、ブラウザーを介してアクセスされる Web アプリケーション (.NET、PHP、Java、Ruby、Python、Node.jsなど) の場合、Azure AD B2C はすべてのユーザー エクスペリエンスに対して OpenID Connect をサポートします。 OpenID Connect の Azure AD B2C 実装では、Web アプリケーションは Microsoft Entra ID に認証要求を発行することでユーザー エクスペリエンスを開始します。 要求の結果は id_tokenです。 このセキュリティ トークンは、ユーザーの ID を表します。 また、ユーザーに関する情報をクレームの形で提供します。

// Partial raw id_token
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImtyaU1QZG1Cd...

// Partial content of a decoded id_token
{
    "name": "John Smith",
    "email": "john.smith@gmail.com",
    "oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    ...
}

アプリケーションで使用できるトークンと要求の種類の詳細については、 Azure AD B2C トークン リファレンスを参照してください。

Web アプリケーションでは、 ポリシー を実行するたびに、次の大まかな手順が実行されます。

  1. ユーザーは Web アプリケーションを参照します。
  2. Web アプリケーションは、実行するポリシーを示す Azure AD B2C にユーザーをリダイレクトします。
  3. ユーザーがポリシーを完了します。
  4. Azure AD B2C は、ブラウザーに id_token を返します。
  5. id_tokenはリダイレクト URI にポストされます。
  6. id_tokenが検証され、セッションCookieが設定されます。
  7. セキュリティで保護されたページがユーザーに返されます。

Microsoft Entra ID から受信した公開署名キーを使用した id_token の検証は、ユーザーの ID を確認するのに十分です。 このプロセスでは、後続のページ要求でユーザーを識別するために使用できるセッション Cookie も設定されます。

このシナリオの動作を確認するには、「 はじめに」セクションにある Web アプリケーションのサインイン コード サンプルのいずれかを試してください。

Web アプリケーションは、簡単なサインインを容易にするだけでなく、バックエンドの Web サービスにもアクセスする必要がある場合があります。 この場合、Web アプリケーションは、わずかに異なる OpenID Connect フロー を実行し、認証コードとリフレッシュ・トークンを使用してトークンを取得できます。 このシナリオについては、次の Web API セクションで説明します。

シングルページ アプリケーション

最新の Web アプリケーションの多くは、クライアント側のシングルページ アプリケーション ("SPA") として構築されています。 開発者は、JavaScript または SPA フレームワーク (Angular、Vue、React など) を使用して記述します。 これらのアプリケーションは Web ブラウザーで実行され、その認証には、従来のサーバー側 Web アプリケーションとは異なる特性があります。

Azure AD B2C には、シングルページ アプリケーションがユーザーをサインインさせ、バックエンド サービスまたは Web API にアクセスするためのトークンを取得できるようにする 2 つの オプションが用意されています。

承認コード フロー (PKCE を使用)

OAuth 2.0 認証コード フロー (PKCE を使用) を使用すると、アプリケーションは 認証 コードを ID トークンと交換して、保護された API を呼び出すために必要な認証されたユーザーと アクセス トークンを表すことができます。 さらに、 更新トークンが 返され、ユーザーに代わってリソースへの長期的なアクセスが提供されます。これらのユーザーとの対話は必要ありません。

この方法 をお勧めします 。 有効期間が制限された更新トークンを使用すると、アプリケーションは Safari ITP などの 最新のブラウザー Cookie のプライバシー制限に適応できます。

このフローを利用するために、アプリケーションで MSAL.js 2.x など、このフローをサポートする認証ライブラリを使用できます。

シングルページ アプリケーション認証

暗黙的な許可のフロー

MSAL.js 1.x などの一部のライブラリは、暗黙的な許可フローのみをサポートしているか、アプリケーションが暗黙的なフローを使用するように実装されています。 このような場合、Azure AD B2C では OAuth 2.0 の暗黙的フローがサポートされます。 暗黙的な許可フローでは、IDアクセス トークンを取得することがアプリケーションに許可されます。 承認コード フローとは異なり、暗黙的な許可フローは 更新トークンを返しません。

この認証フローには、Electron や React-Native などのクロスプラットフォーム JavaScript フレームワークを使用するアプリケーション シナリオは含まれません。 これらのシナリオでは、ネイティブ プラットフォームとの対話のための追加の機能が必要です。

Warnung

マイクロソフトは、暗黙的な許可のフローを使用しないようお勧めします。 SPA をサポートする推奨される方法は、 OAuth 2.0 承認コード フロー (PKCE を使用) です。 このフローの構成によっては、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、より安全なフローが実行可能ではない場合にのみ使用してください。 詳細については、「暗黙的な許可フローに関するセキュリティの問題」を参照してください。

Web API

Azure AD B2C を使用して、アプリケーションの RESTful Web API などの Web サービスをセキュリティで保護できます。 Web API は、OAuth 2.0 を使用して、トークンを使用して受信 HTTP 要求を認証することで、データを保護できます。 Web API の呼び出し元は、HTTP 要求の承認ヘッダーにトークンを追加します。

GET /api/items HTTP/1.1
Host: www.mywebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6...
Accept: application/json
...

その後、Web API はトークンを使用して API 呼び出し元の ID を確認し、トークンにエンコードされた要求から呼び出し元に関する情報を抽出できます。 アプリで使用できるトークンと要求の種類の詳細については、 Azure AD B2C トークン リファレンスを参照してください。

Web API は、Web アプリケーション、デスクトップおよびモバイル アプリケーション、シングル ページ アプリケーション、サーバー側デーモン、その他の Web API など、さまざまな種類のクライアントからトークンを受け取ることができます。 Web API を呼び出す Web アプリケーションの完全なフローの例を次に示します。

  1. Web アプリケーションがポリシーを実行し、ユーザーがユーザー エクスペリエンスを完了します。
  2. Azure AD B2C は、(OpenID Connect) id_token と認証コードをブラウザーに返します。
  3. ブラウザは、 id_token と認証コードをリダイレクトURIに投稿します。
  4. Web サーバーは id_token を検証し、セッション Cookie を設定します。
  5. Web サーバーは、認証コード、アプリケーション クライアント ID、およびクライアント資格情報を提供することで、Azure AD B2C に access_token を要求します。
  6. access_tokenrefresh_tokenが Web サーバーに返されます。
  7. Web API は、認証ヘッダーに access_token を指定して呼び出されます。
  8. Web API によってトークンが検証されます。
  9. セキュリティで保護されたデータが Web アプリケーションに返されます。

認証コード、更新トークン、トークンを取得する手順の詳細については、 OAuth 2.0 プロトコルに関する記事を参照してください。

Azure AD B2C を使用して Web API をセキュリティで保護する方法については、「 はじめに」セクションの Web API チュートリアルを参照してください。

モバイルおよびネイティブ アプリケーション

モバイル アプリケーションやデスクトップ アプリケーションなど、デバイスにインストールされているアプリケーションは、多くの場合、ユーザーに代わってバックエンド サービスや Web API にアクセスする必要があります。 カスタマイズされた ID 管理エクスペリエンスをネイティブ アプリケーションに追加し、Azure AD B2C と OAuth 2.0 認証コード フローを使用してバックエンド サービスを安全に呼び出すことができます。

このフローでは、アプリケーションが ポリシー を実行し、ユーザーがポリシーを完了した後に Microsoft Entra ID から authorization_code を受け取ります。 authorization_codeは、現在サインインしているユーザーの代わりにバックエンド サービスを呼び出すためのアプリケーションのアクセス許可を表します。 その後、アプリケーションはバックグラウンドの authorization_codeaccess_tokenrefresh_tokenと交換できます。 アプリケーションは、 access_token を使用して、HTTP 要求でバックエンド Web API に対して認証できます。 また、 refresh_token を使用して、古い access_token の有効期限が切れたときに新しいを取得することもできます。

デーモン/サーバー・サイド・アプリケーション

実行時間の長いプロセスを含むアプリケーションや、ユーザーがいなくても動作するアプリケーションには、Web API などのセキュリティで保護されたリソースにアクセスする方法も必要です。 これらのアプリケーションは、(ユーザーの委任された ID ではなく) 自分の ID を使用し、OAuth 2.0 クライアント資格情報フローを使用して、認証とトークンの取得を行うことができます。 クライアント資格情報フローは代理フローと同じではなく、サーバー間認証には代理フローを使用しないでください。

Azure AD B2C の場合、 OAuth 2.0 クライアント資格情報フロー は現在パブリック プレビュー段階です。 ただし、Microsoft Entra ID と Microsoft ID プラットフォーム /token エンドポイント (https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token) を使用して、 Microsoft Graph アプリケーション または独自のアプリケーションのクライアント資格情報フローを設定できます。 詳細については、 Microsoft Entra トークンのリファレンス 記事を参照してください。

サポートされていないアプリケーションの種類

Web API チェーン (フローの代理)

多くのアーキテクチャには、別のダウンストリーム Web API を呼び出す必要がある Web API が含まれており、どちらも Azure AD B2C によって保護されています。 このシナリオは、Web API バックエンドを持ち、Microsoft Graph API などの Microsoft オンライン サービスを呼び出すネイティブ クライアントで一般的です。

このチェーンされた Web API シナリオは、OAuth 2.0 JWT ベアラー資格情報付与 (on-behalf-of フローとも呼ばれます) を使用してサポートできます。 ただし、代理フローは現在 Azure AD B2C に実装されていません。

次のステップ

Azure Active Directory B2C のユーザー フローによって提供される組み込みポリシーの詳細を確認します。