Web アプリケーションが実行するポリシーを示す Azure AD B2C にユーザーをリダイレクトする。
ユーザーがポリシーを完了する。
Azure AD B2C が id_token をブラウザーに返す。
id_token がリダイレクト URI にポストされる。
id_token が検証され、セッション cookie が設定される。
セキュリティで保護されたページがユーザーに返される。
ユーザーの ID を確認するには、Microsoft Entra ID から受け取った公開署名キーを使って id_token を検証するだけで十分です。 このプロセスにより、以降のページ要求でユーザーを識別するために使用できるセッション 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 を呼び出すために必要なアクセス トークンの認可コードを交換することをアプリケーションに許可します。 また、ユーザーが操作しなくてもユーザーの代わりにリソースへの長期間アクセスを提供する更新トークンが返されます。
Microsoft ではこのアプローチを推奨しています。 有効期間が制限された更新トークンを使用すると、Safari ITP のような最新のブラウザーの Cookie プライバシー制限にアプリケーションを適合させることができます。
Azure AD B2C を使用して、アプリケーションの RESTful Web API などの Web サービスをセキュリティで保護できます。 Web API では、OAuth 2.0 を使用し、トークンによって受信 HTTP 要求を認証することで、データをセキュリティで保護することができます。 Web API の呼び出し元は、HTTP 要求の承認ヘッダーの中にトークンを追加します。
Web API はトークンを使用して API の呼び出し元の ID を検証し、トークン内にエンコードされているクレームから呼び出し元に関する情報を抽出します。 アプリで利用できるトークンと要求の種類の詳細については、 Azure AD B2C トークン リファレンスのページを参照してください。
Web API は、Web アプリケーション、デスクトップ アプリケーション、モバイル アプリケーション、シングル ページ アプリケーション、サーバー サイド デーモン、それ以外の Web API など、多くの種類のクライアントからトークンを受信できます。 ここでは、Web API を呼び出す Web アプリケーションの完全なフローの例を示します。
Web アプリケーションがポリシーを実行し、ユーザーがユーザー エクスペリエンスを完了する。
Azure AD B2C が (OpenID Connect) id_token と承認コードをブラウザーに返す。
ブラウザーが id_token と承認コードをリダイレクト URI にポストする。
Web サーバーが id_token を検証し、セッション cookie を設定する。
Web サーバーが、認可コード、アプリケーション クライアント ID、クライアントの資格情報を提供することで、Azure AD B2C に access_token を要求する。
access_token と refresh_token が Web サーバーに返される。
Authorization ヘッダーに access_token が含まれる Web API が呼び出される。
Azure AD B2C を使用して Web API をセキュリティ保護する方法の詳細については、Web API チュートリアルの「 作業開始」セクションを参照してください。
モバイルおよびネイティブ アプリケーション
モバイル アプリケーションやデスクトップ アプリケーションなどのデバイスにインストールされているアプリケーションは、多くの場合、ユーザーの代わりにバックエンド サービスや Web API にアクセスする必要があります。 カスタマイズされた ID 管理エクスペリエンスをネイティブ アプリケーションに追加し、Azure AD B2C と OAuth 2.0 の承認コード フローを使用して、バックエンド サービスを安全に呼び出すことができます。
このフローで、アプリケーションでは、ポリシーが実行され、ユーザーがポリシーを完了した後に Microsoft Entra ID から authorization_code を受け取ります。
authorization_code は、現在サインインしているユーザーに代わってバックエンド サービスを呼び出すためのアプリケーションのアクセス許可を表します。 これにより、アプリケーションはバックグラウンドで authorization_code を access_token および refresh_token と交換できます。 アプリケーションは access_token を使用し、HTTP 要求でバックエンド Web API への認証を行うことができます。 また、古い access_token の有効期限が切れたときは、refresh_token を使用して新しいものを取得できます。
デーモン/サーバー側アプリケーション
長時間実行されるプロセスを含んだアプリケーションや、ユーザーの介入なしで動作するアプリケーションも、セキュリティで保護されたリソース (Web API など) にアクセスする必要があります。 これらのアプリケーションは、(ユーザーの委任 ID ではなく) その ID を使用し、OAuth 2.0 クライアント資格情報フローを使用することで、認証を行い、トークンを取得することができます。 クライアント資格情報フローは、On-Behalf-Of フローと同じではなく、On-Behalf-Of フローは、サーバー対サーバー認証には使用しないようにする必要があります。
Azure AD B2C の場合、OAuth 2.0 クライアント資格情報フローは、現在パブリック プレビュー段階です。 ただし、Microsoft Graph アプリケーションまたは独自のアプリケーションでは、Microsoft Entra ID と Microsoft ID プラットフォーム /token エンドポイント (https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token) を使って、クライアント資格情報フローを設定することができます。 詳細については、Microsoft Entra のトークン リファレンスに関する記事を参照してください。
サポートされていないアプリケーションの種類
Web API チェーン (On-Behalf-Of フロー)
多くのアーキテクチャには別のダウンストリーム Web API を呼び出す必要がある Web API が含まれ、その場合は両方とも Azure AD B2C によってセキュリティ保護されます。 このシナリオは、バックエンドの Web API から Microsoft オンライン サービス (Microsoft Graph API など) を呼び出すネイティブ クライアントでよく見られます。
このように Web API を連鎖的に呼び出すシナリオは、OAuth 2.0 JWT Bearer Credential Grant (On-Behalf-Of フロー) を使用してサポートできます。 しかし、現時点では、Azure AD B2C に On-Behalf-Of フローは実装されていません。