重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
この記事では、Azure AD B2C のユーザー フローを使用して、特定の Microsoft Entra 組織のユーザーのサインインを有効にする方法について説明します。
開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
注
Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。 ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。 まだ行っていない場合は、Active Directory B2C でのカスタム ポリシーの概要に関する記事で、カスタム ポリシー スターター パックの詳細を確認してください。
[前提条件]
- ユーザーが サインアップしてアプリケーションにサインインできるように、ユーザー フローを作成します。
- Web アプリケーションを登録します。
- 「Active Directory B2C でのカスタム ポリシーの概要」の手順を完了してください。 このチュートリアルでは、Azure AD B2C テナント構成を使用するようにカスタム ポリシー ファイルを更新する方法について説明します。
- Web アプリケーションを登録します。
アプリケーションの発行元ドメインを確認する
2020 年 11 月の時点で、 アプリケーションの発行元ドメインが確認され、 会社の ID が Microsoft Partner Network で確認され、アプリケーションに関連付けられている場合を除き、新しいアプリケーションの登録はユーザーの同意プロンプトに未確認として表示されます。 (この変更の詳細については、こちらをご覧ください 。Azure AD B2C ユーザー フローの場合、発行元のドメインは、ID プロバイダーとして Microsoft アカウント またはその他の Microsoft Entra テナントを使用している場合にのみ表示されることに注意してください。 これらの新しい要件を満たすには、次の操作を行います。
- 自分の Microsoft Partner Network (MPN) アカウントを使用して会社 ID を確認します。 このプロセスにより、会社と会社の主要連絡先に関する情報が検証されます。
- 発行元の確認プロセスを完了し、次のいずれかのオプションを使用して、MPN アカウントをアプリ登録に関連付けます。
- Microsoft アカウント ID プロバイダーのアプリの登録が Microsoft Entra テナント内にある場合は、アプリ登録ポータルでアプリを検証します。
- Microsoft アカウント ID プロバイダーのアプリの登録が Azure AD B2C テナント内にある場合、Microsoft Graph API を使用して発行元がアプリを検証済みとしてマークします (たとえば、Graph Explorer を使用)。 アプリの検証済み発行元を設定するための UI は、現在 Azure AD B2C テナントでは無効になっています。
Microsoft Entra アプリを登録する
特定の Microsoft Entra 組織の Microsoft Entra アカウントを持つユーザーのサインインを有効にするには、Azure Active Directory B2C (Azure AD B2C) で、 Azure portal でアプリケーションを作成する必要があります。 詳細については、Microsoft ID プラットフォームにアプリケーションを登録する方法に関するページを参照してください。
Azure portal にサインインします。
複数のテナントにアクセスできる場合は、上部メニューの [設定] アイコンを選択して、[ ディレクトリ + サブスクリプション ] メニューから Microsoft Entra ID テナントに切り替えます。
Azure portal で、 Microsoft Entra ID を検索して選択します。
左側のメニューの [管理] で、 [ アプリの登録] を選択します。
[+ 新規登録] を選択します。
アプリケーションの 名前 を入力します。 たとえば、
Azure AD B2C App
のようにします。デフォルトで選択されているこのアプリケーション用の「この組織ディレクトリ内のアカウントのみ(デフォルトディレクトリのみ - シングルテナント)」をそのまま使用します。
リダイレクト URI の場合は、Web の値を受け入れ、すべての小文字で次の URL を入力します。ここで、
your-B2C-tenant-name
は Azure AD B2C テナントの名前に置き換えられます。https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp
たとえば、
https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/oauth2/authresp
のようにします。カスタム ドメインを使用する場合は、「
https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp
」と入力します。your-domain-name
をカスタム ドメインに置き換え、your-tenant-name
をテナントの名前に置き換えます。登録 を選択します。 後の手順で使用する アプリケーション (クライアント) ID を 記録します。
[ 証明書とシークレット] を選択し、[ 新しいクライアント シークレット] を選択します。
シークレットの 説明 を入力し、有効期限を選択して、[ 追加] を選択します。 後の手順で使用するシークレットの 値 を記録します。
Microsoft Entra ID を ID プロバイダーとして構成する
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
[ID プロバイダー] を選択し、[新しい OpenID Connect プロバイダー] を選択します。
名前を入力します。 たとえば、「 Contoso Microsoft Entra ID」と入力します。
[メタデータ URL] に、次の URL を入力し、
{tenant}
を Microsoft Entra テナントのドメイン名に置き換えます。https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration
たとえば、https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0/.well-known/openid-configuration
のようにします。 カスタムドメインを使用する場合は、https://login.microsoftonline.com/contoso.com/v2.0/.well-known/openid-configuration
でcontoso.com
をカスタムドメインに置き換えます。
クライアント IDには、前に記録したアプリケーション ID を入力します。
[ Client secret] に、以前に記録したクライアントシークレットの値を入力します。
[ スコープ] に「
openid profile
」と入力します。[応答の種類] と [応答モード] の既定値のままにします。
(省略可能) ドメイン ヒントに「
contoso.com
」と入力します。 詳しくは、「Azure Active Directory B2C を使用した直接サインインの設定」をご覧ください。[ ID プロバイダー要求マッピング] で、次の要求を選択します。
- ユーザーID: oid
- 表示名: 名前
- 指定された名前: given_name
- 姓: family_name
- 電子メール: 電子メール
保存 を選択します。
Microsoft Entra ID プロバイダーをユーザー フローに追加する
この時点で、Microsoft Entra ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 Microsoft Entra ID プロバイダーをユーザー フローに追加するには:
- Azure AD B2C テナントで、[ ユーザー フロー] を選択します。
- Microsoft Entra ID プロバイダーを追加するユーザー フローをクリックします。
- [設定] で [ID プロバイダー] を選択します
- [カスタム ID プロバイダー] で、 [Contoso Microsoft Entra ID] を選択します。
- 保存 を選択します。
- ポリシーをテストするには、[ ユーザー フローの実行] を選択します。
- [ アプリケーション] で、 以前に登録した Web アプリケーションを選択します。
応答 URL に
https://jwt.ms
が表示されます。 - [ ユーザー フローの実行 ] ボタンを選択します。
- サインアップまたはサインイン ページで、 [Contoso Microsoft Entra ID ] を選択して、Microsoft Entra Contoso アカウントでサインインします。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。
ポリシー キーを作成する
作成したアプリケーション キーを Azure AD B2C テナントに格納する必要があります。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [ ポリシー] で、[ Identity Experience Framework] を選択します。
- [ ポリシー キー ] を選択し、[追加] を選択 します。
-
[オプション] で、[
Manual
] を選択します。 - ポリシー キーの名前を入力します。 たとえば、
ContosoAppSecret
のようにします。 プレフィックスB2C_1A_
は、キーの作成時にキーの名前に自動的に追加されるため、次のセクションの XML での参照は to B2C_1A_ContosoAppSecret になります。 - [シークレット] に、前に記録したクライアント シークレットの値を入力します。
- [ キーの使用法] で、[
Signature
] を選択します。 - を選択してを作成します。
Microsoft Entra ID を ID プロバイダーとして構成する
ユーザーが Microsoft Entra アカウントを使用してサインインできるようにするには、Azure AD B2C がエンドポイント経由で通信できるクレーム プロバイダーとして Microsoft Entra ID を定義する必要があります。 エンドポイントは、特定のユーザーが認証されたことを確認するために Azure AD B2C によって使用されるクレームのセットを提供します。
Microsoft Entra ID をクレーム プロバイダーとして定義するには、ポリシーの拡張ファイルの ClaimsProvider 要素に Microsoft Entra ID を追加します。
TrustFrameworkExtensions.xml ファイルを開きます。
ClaimsProviders 要素を検索します。 存在しない場合は、ルート要素の下に追加します。
次のように新しい ClaimsProvider を追加します。
<ClaimsProvider> <Domain>Contoso</Domain> <DisplayName>Login using Contoso</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="AADContoso-OpenIdConnect"> <DisplayName>Contoso Employee</DisplayName> <Description>Login with your Contoso account</Description> <Protocol Name="OpenIdConnect"/> <Metadata> <Item Key="METADATA">https://login.microsoftonline.com/tenant-name.onmicrosoft.com/v2.0/.well-known/openid-configuration</Item> <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item> <Item Key="response_types">code</Item> <Item Key="scope">openid profile</Item> <Item Key="response_mode">form_post</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">false</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoAppSecret"/> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/> <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
ClaimsProvider 要素で、Domain の値を、他の ID プロバイダーと区別するために使用できる一意の値に更新します。 たとえば、「
Contoso
」のように指定します。 このドメイン設定の末尾に.com
は置かないでください。ClaimsProvider 要素で、DisplayName の値をクレーム プロバイダーのフレンドリ名に更新します。 この値は現在使用されていません。
技術プロファイルを更新する
Microsoft Entra エンドポイントからトークンを取得するには、Azure AD B2C が Microsoft Entra ID との通信に使用するプロトコルを定義する必要があります。 これは、ClaimsProvider の TechnicalProfile 要素内で行われます。
-
TechnicalProfile 要素の ID を更新します。 この ID は、ポリシーの他の部分 (
AADContoso-OpenIdConnect
など) からこの技術プロファイルを参照するために使用されます。 - DisplayName の値を更新します。 この値は、サインイン画面のサインイン ボタンに表示されます。
- [説明] の値を更新します。
- Microsoft Entra ID は OpenID Connect プロトコルを使用するため、 [プロトコル ] の値が
OpenIdConnect
であることを確認してください。 -
METADATA の値を
https://login.microsoftonline.com/tenant-name.onmicrosoft.com/v2.0/.well-known/openid-configuration
に設定します (tenant-name
は Microsoft Entra テナント名です)。 たとえば、https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0/.well-known/openid-configuration
のように指定します。 - client_idアプリケーション登録のアプリケーション ID に設定します。
-
[CryptographicKeys] で、StorageReferenceId の値を、前に作成したポリシー キーの名前に更新します。 たとえば、
B2C_1A_ContosoAppSecret
のようにします。
ユーザー体験を追加する
この時点で、ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 独自のカスタム ユーザー体験がない場合は、既存のテンプレート ユーザー体験の複製を作成します。それ以外の場合は、次の手順に進みます。
- スターター パックから TrustFrameworkBase.xml ファイルを開きます。
-
を含む
Id="SignUpOrSignIn"
要素の内容全体を検索してコピーします。 - TrustFrameworkExtensions.xml を開き、UserJourneys 要素を見つけます。 要素が存在しない場合は、要素を追加します。
- UserJourneys 要素の子としてコピーした UserJourney 要素の内容全体を貼り付けます。
- ユーザージャーニーの ID を変更します。 たとえば、
Id="CustomSignUpSignIn"
のようにします。
ID プロバイダーをユーザー体験に追加する
これでユーザー体験が作成されたので、新しい ID プロバイダーをユーザー体験に追加します。 最初にサインイン ボタンを追加し、そのボタンをアクションにリンクします。 あなたが以前に作成した技術プロファイルがこのアクションです。
ユーザー体験に
Type="CombinedSignInAndSignUp"
またはType="ClaimsProviderSelection"
を含むオーケストレーション ステップ要素を見つけます。 通常は、オーケストレーションの最初の手順です。 ClaimsProviderSelections 要素には、ユーザーがサインインできる ID プロバイダーの一覧が含まれています。 要素の順序は、ユーザーに表示されるサインイン ボタンの順序を制御します。 ClaimsProviderSelection XML 要素を追加します。 TargetClaimsExchangeId の値をフレンドリ名に設定します。次のオーケストレーション手順で、 ClaimsExchange 要素を追加します。 Id をターゲット要求交換 ID の値に設定します。TechnicalProfileReferenceId の値を、先ほど作成した技術プロファイルの ID に更新します。
次の XML は、ID プロバイダーを使用したユーザー体験の最初の 2 つのオーケストレーション手順を示しています。
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="AzureADContosoExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="AzureADContosoExchange" TechnicalProfileReferenceId="AADContoso-OpenIdConnect" />
</ClaimsExchanges>
</OrchestrationStep>
依存先パーティーポリシーを構成する
証明書利用者ポリシー ( SignUpSignIn.xmlなど) は、Azure AD B2C が実行するユーザー体験を指定します。 依存するパーティー内で DefaultUserJourney 要素を検索します。 追加した ID プロバイダーのユーザージャーニー ID と一致するように ReferenceId を更新します。
次の例では、 CustomSignUpSignIn
ユーザー体験の ReferenceId が CustomSignUpSignIn
に設定されています。
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
カスタム ポリシーをアップロードする
- Azure portal にサインインします。
- ポータル のツール バーで [ディレクトリ + サブスクリプション ] アイコンを選択し、Azure AD B2C テナントが含まれているディレクトリを選択します。
- Azure portal で、 [Azure AD B2C] を検索して選択します。
- [ ポリシー] で、[ Identity Experience Framework] を選択します。
- [ カスタム ポリシーのアップロード] を選択し、変更した 2 つのポリシー ファイルを次の順序でアップロードします。拡張機能ポリシー (
TrustFrameworkExtensions.xml
など)、証明書利用者ポリシー (SignUpSignIn.xml
など)。
カスタム ポリシーをテストする
- 関連パーティポリシー(例:
B2C_1A_signup_signin
)を選択してください。 - [ アプリケーション] で、 以前に登録した Web アプリケーションを選択します。
応答 URL に
https://jwt.ms
が表示されます。 - [ 今すぐ実行 ] ボタンを選択します。
- サインアップ ページまたはサインイン ページで、 [Contoso Employee ] を選択して、Microsoft Entra Contoso アカウントでサインインします。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。
[オプション]オプションの要求の構成
Microsoft Entra ID から family_name
要求と given_name
要求を取得する場合は、Azure portal UI またはアプリケーション マニフェストでアプリケーションの省略可能な要求を構成できます。 詳細については、「 Microsoft Entra アプリに省略可能な要求を提供する方法」を参照してください。
- 組織の Microsoft Entra テナントを使用して Azure portal にサインインします。 または、既にサインインしている場合は、組織の Microsoft Entra テナント (Contoso など) を含むディレクトリを使用していることを確認してください。
- ポータル ツールバーの [Directories + subscriptions](ディレクトリ + サブスクリプション) アイコンを選択します。
- ポータルの 設定 |[ディレクトリとサブスクリプション ] ページで、ディレクトリ 名 の一覧で Microsoft Entra ディレクトリを見つけて、[ 切り替え] を選択します。
- Azure portal で、 Microsoft Entra ID を検索して選択します。
- 左側のメニューの [管理] で、 [ アプリの登録] を選択します。
- 省略可能な要求を構成するアプリケーションを一覧で選択します (
Azure AD B2C App
など)。 - [ 管理 ] セクションで、[ トークンの構成] を選択します。
- [ 省略可能な要求の追加] を選択します。
- [トークンの種類] で 、[ID] を選択します。
- 追加するオプションの要求、
family_name
、given_name
を選択します。 - [] を選択し、[] を追加します。 [Microsoft Graph プロファイルのアクセス許可を有効にする (要求をトークンに表示するために必要)] が表示された場合は、それを有効にし、もう一度 [追加] を選択します。
[省略可能]アプリの信頼性を確認する
サイト運営者確認 は、 登録したアプリの信頼性をユーザーが理解するのに役立ちます。 検証済みアプリとは、アプリの発行元が Microsoft Partner Network (MPN) を使用して ID を 検証したことを 意味します。 アプリを発行者確認済みとしてマークする方法についてご確認ください。
次のステップ
Microsoft Entra トークンをアプリケーションに渡す方法について説明します。