重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
この記事では、Web アプリケーション ASP.NET サンプルを使用して、Azure Active Directory B2C (Azure AD B2C) 認証を Web アプリケーションに追加する方法を説明します。
重要
この記事で参照されているサンプル ASP.NET Web アプリは、アクセス トークンではなく ID トークンを返すので、REST API の呼び出しには使用できません。 REST API を呼び出すことができる Web アプリについては、「 Azure AD B2C を使用して ASP.NET Core で構築された Web API をセキュリティで保護する」を参照してください。
概要
OpenID Connect (OIDC) は、OAuth 2.0 を基盤にした認証プロトコルです。 OIDC を使用して、ユーザーをアプリケーションに安全にサインインさせることができます。 この Web アプリのサンプルでは 、Microsoft Identity Web を使用します。 Microsoft Identity Web は、Web アプリへの認証と承認のサポートの追加を簡略化する一連の ASP.NET Core ライブラリです。
サインイン フローには、次の手順が含まれます。
- ユーザーが Web アプリにアクセスして [サインイン] を選択します。
- アプリによって認証要求が開始され、ユーザーが Azure AD B2C にリダイレクトされます。
- ユーザーがサインアップまたはサインインし、パスワードをリセットします。 ソーシャル アカウントを使用してサインインすることもできます。
- ユーザーが正常にサインインすると、Azure AD B2C は ID トークンをアプリに返します。
- アプリは ID トークンを検証し、要求を読み取り、セキュリティで保護されたページをユーザーに返します。
ID トークンの有効期限が切れているか、アプリ セッションが無効になると、アプリは新しい認証要求を開始し、ユーザーを Azure AD B2C にリダイレクトします。 Azure AD B2C SSO セッションがアクティブである場合、Azure AD B2C は、ユーザーに再度サインインを促さずにアクセス トークンを発行します。 Azure AD B2C セッションが有効期限切れまたは無効になった場合、ユーザーは再度サインインするように促されます。
サインアウト
サインアウト フローには、次の手順が含まれます。
- アプリから、ユーザーがサインアウトします。
- アプリによってそのセッション オブジェクトがクリアされ、認証ライブラリによってそのトークン キャッシュがクリアされます。
- アプリによってユーザーが Azure AD B2C サインアウト エンドポイントに移動し、Azure AD B2C セッションが終了されます。
- ユーザーが再びアプリにリダイレクトされます。
[前提条件]
次のいずれかを実行しているコンピューター。
- Visual Studio 2022 17.0 以降(ASP.NET および Web 開発ワークロードを含む)
- .NET 6.0 SDK
手順 1: ユーザー フローを構成する
ユーザーがアプリにサインインしようとすると、ユーザー フローを介した承認エンドポイントへの認証要求がアプリによって開始されます。 ユーザー フローによって、ユーザーのエクスペリエンスが定義および制御されます。 ユーザーがユーザー フローを完了すると、Azure AD B2C によってトークンが生成され、ユーザーはアプリケーションにリダイレクトされます。
ユーザー フローまたはカスタム ポリシーの作成をまだ行っていない場合は、作成します。 手順を繰り返して、次のように 3 つの個別のユーザー フローを作成します。
-
サインインと サインアップを結合したユーザー フロー (例:)
susi
。 このユーザー フローでは、パスワードを忘れた 場合のエクスペリエンスもサポート されています。 -
プロファイル編集 ユーザー フロー (例:
edit_profile
) 。 -
パスワードのリセット ユーザー フロー (例:
reset_password
)。
Azure AD B2C は、 B2C_1_
ユーザー フロー名の前に付加されます。 たとえば、susi
が B2C_1_susi
になります。
手順 2: Web アプリケーションを登録する
アプリケーションが Azure AD B2C でサインインできるようにするには、Azure AD B2C ディレクトリにアプリを登録します。 アプリを登録すると、アプリと Azure AD B2C の間に信頼関係が確立されます。
アプリの登録時に、 リダイレクト URI を指定します。 リダイレクト URI は、ユーザーが Azure AD B2C で認証を行った後、Azure AD B2C によってリダイレクトされるエンドポイントです。 アプリ登録プロセスは、アプリを一意に識別するアプリケーション ID (またはクライアント ID として知られています) を生成します。 アプリが登録されると、Azure AD B2C はアプリケーション ID とリダイレクト URI の両方を使用して認証要求を作成します。
Web アプリの登録を作成するには、次の手順に従います。
Azure portal にサインインします。
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
Azure portal で、 [Azure AD B2C] を検索して選択します。
[アプリの登録] を選択し、[新しい登録] を選択します。
[ 名前] に、アプリケーションの名前 ( webapp1 など) を入力します。
[サポートされているアカウントの種類] で、[(ユーザー フローを使用してユーザーを認証するための) 任意の ID プロバイダーまたは組織のディレクトリのアカウント] を選択します。
[リダイレクト URI] で、 [Web] を選択し、URL ボックスに「
https://localhost:44316/signin-oidc
」と入力します。[ 管理] で[ 認証] を選択し、[ 暗黙的な許可とハイブリッド フロー] に移動し、[ ID トークン (暗黙的フローとハイブリッド フローに使用)] チェック ボックスをオンにします。
[アクセス許可] で、 [Grant admin consent to openid and offline access permissions](OpenID とオフラインのアクセス許可に管理者の同意を与える) チェック ボックスをオンにします。
登録 を選択します。
[概要] を選択します。
アプリケーション (クライアント) ID を記録しておきます。これは、後で Web アプリケーションを構成するときに使用します。
手順 3: Web アプリのサンプルを取得する
zip ファイルをダウンロードするか、GitHub からサンプル Web アプリケーションを複製します。
git clone https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2
パスの合計長が 260 文字以下のフォルダーにサンプル ファイルを抽出します。
手順 4: サンプル Web アプリを構成する
サンプル フォルダーの 1-WebApp-OIDC/1-5-B2C/ フォルダーで、Visual Studio または Visual Studio Code で WebApp-OpenIDConnect-DotNet.csproj プロジェクトを開きます。
プロジェクトのルート フォルダーで、appsettings.json ファイルを開きます。 このファイルには、Azure AD B2C ID プロバイダーに関する情報が含まれています。 次のアプリ設定プロパティを更新します。
セクション | 鍵 | 価値 |
---|---|---|
AzureAdB2C の翻訳 | 事例 | Azure AD B2C テナント名 の最初の部分 (たとえば、 https://contoso.b2clogin.com )。 |
AzureAdB2C の翻訳 | ドメイン | Azure AD B2C テナントの完全な テナント名 (たとえば、 contoso.onmicrosoft.com )。 |
AzureAdB2C の翻訳 | ClientId | 手順 2 の Web アプリ アプリケーション (クライアント) ID。 |
AzureAdB2C の翻訳 | SignUpSignInPolicyId | 手順 1 で作成したユーザー フローまたはカスタム ポリシー。 |
最終的な構成ファイルは、次の JSON のようになります。
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "contoso.onmicrosoft.com",
"ClientId": "<web-app-application-id>",
"SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
"SignUpSignInPolicyId": "<your-sign-up-in-policy>"
}
手順 5: サンプル Web アプリを実行する
プロジェクトをビルドして実行します。
https://localhost:44316
にアクセスします。[ サインアップ/サインイン] を選択します。
サインインアップまたはサインイン プロセスを完了します。
認証が成功すると、ナビゲーション バーに表示名が表示されます。 Azure AD B2C トークンがアプリに返す要求を表示するには、[要求] を選択 します。
アプリケーションをデプロイする
運用アプリケーションでは、アプリ登録のリダイレクト URI は通常、アプリが実行されているパブリックにアクセス可能なエンドポイント (https://contoso.com/signin-oidc
など) です。
お使いの登録済みアプリケーションでは、いつでもリダイレクト URI を追加したり、変更したりすることができます。 リダイレクト URI には、次の制限があります。
- 応答 URL は、スキーム
https
で始まる必要があります。 - 応答 URL では大文字と小文字が区別されます。 大文字と小文字の区別は、実行中のアプリケーションの URL パスの場合と一致している必要があります。
次のステップ
- コード サンプルの詳細については、こちらを参照してください。
- Azure AD B2C を使用して独自の Web アプリで認証を有効にする方法について説明します。