重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
この機能は、カスタム ポリシーでのみ使用できます。 セットアップ手順については、前のセレクターで [カスタム ポリシー] を選択します。
この記事では、Microsoft Entra ID のマルチテナント エンドポイントを使用してユーザーのサインインを有効にする方法について説明します。これにより、複数の Microsoft Entra テナントのユーザーは、テナントごとに ID プロバイダーを構成しなくても、Azure AD B2C を使用してサインインできます。 ただし、これらのテナントのゲスト メンバー はサインインできません 。 そのためには、 各テナントを個別に構成する必要があります。
[前提条件]
- ユーザーが サインアップしてアプリケーションにサインインできるように、ユーザー フローを作成します。
- Web アプリケーションを登録します。
- 「Active Directory B2C でのカスタム ポリシーの概要」の手順を完了してください。 このチュートリアルでは、Azure AD B2C テナント構成を使用するようにカスタム ポリシー ファイルを更新する方法について説明します。
- Web アプリケーションを登録します。
注
この記事では、前提条件で説明した前の手順で SocialAndLocalAccounts スターター パックを使用することを前提としています。
Microsoft Entra アプリを登録する
ユーザーが Microsoft Entra アカウントを使用して Azure AD B2C にサインインできるようにするには、まず 、Azure portal から Microsoft Entra テナントでアプリケーションを作成する必要があります。 詳細については、Microsoft ID プラットフォームにアプリケーションを登録する方法に関するページを参照してください。
Azure portal にサインインします。
複数のテナントにアクセスできる場合は、上部メニューの [設定] アイコンを選択して、[ ディレクトリ + サブスクリプション ] メニューから Microsoft Entra テナントに切り替えます。
Azure portal の左上隅にある [ すべてのサービス ] を選択し、[ アプリの登録] を検索して選択します。
[新規登録] を選択します。
アプリケーションの 名前 を入力します。 たとえば、
Azure AD B2C App
のようにします。このアプリケーション の任意の組織ディレクトリ (任意の Microsoft Entra ディレクトリ – マルチテナント) のアカウント を選択します。
リダイレクト 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 からfamily_name
および given_name
の要求を取得するには、Azure ポータルの UI またはアプリケーション マニフェストでアプリケーションの省略可能な要求を構成できます。 詳細については、「 Microsoft Entra アプリに省略可能な要求を提供する方法」を参照してください。
- Azure portal にサインインします。 Microsoft Entra ID を検索して選択します。
- [ 管理 ] セクションで、[ アプリの登録] を選択します。
- オプションの要求を構成するアプリケーションを一覧から選択します。
- [ 管理 ] セクションで、[ トークンの構成] を選択します。
- [ 省略可能な要求の追加] を選択します。
- [トークンの種類] で 、[ID] を選択します。
- 追加する省略可能な要求を選択し、
family_name
とgiven_name
を追加します。 - [] を選択し、[] を追加します。 Microsoft Graph の電子メールアクセス許可を有効にする (トークンに要求を表示するために必要) が表示された場合は、有効にして、[追加] をもう一度選択します。
[省略可能]アプリの信頼性を確認する
発行元の確認は 、登録したアプリの信頼性をユーザーが理解するのに役立ちます。 検証済みアプリとは、アプリの発行元が Microsoft Partner Network (MPN) を使用して ID を 検証したことを 意味します。 アプリを発行者確認済みとしてマークする方法についてご確認ください。
ポリシー キーを作成する
作成したアプリケーション キーを Azure AD B2C テナントに格納する必要があります。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [ ポリシー] で、[ Identity Experience Framework] を選択します。
- [ ポリシー キー ] を選択し、[追加] を選択 します。
-
[オプション] で、[
Manual
] を選択します。 - ポリシー キーの名前を入力します。 たとえば、
AADAppSecret
のようにします。 プレフィックスB2C_1A_
は、作成時にキーの名前に自動的に追加されるため、次のセクションの XML での参照は B2C_1A_AADAppSecret。 - [ シークレット] に、前に記録したクライアント シークレットを入力します。
- [ キーの使用法] で、[
Signature
] を選択します。 - を選択してを作成します。
Microsoft Entra ID を ID プロバイダーとして構成する
ユーザーが Microsoft Entra アカウントを使用してサインインできるようにするには、Azure AD B2C がエンドポイント経由で通信できるクレーム プロバイダーとして Microsoft Entra ID を定義する必要があります。 エンドポイントは、特定のユーザーが認証されたことを確認するために Azure AD B2C によって使用されるクレームのセットを提供します。
Microsoft Entra ID をクレーム プロバイダーとして定義するには、ポリシーの拡張ファイルの ClaimsProvider 要素に Microsoft Entra ID を追加します。
SocialAndLocalAccounts/TrustFrameworkExtensions.xml ファイルを開きます (前提条件で使用したファイルを参照してください)。
ClaimsProviders 要素を検索します。 存在しない場合は、ルート要素の下に追加します。
次のように新しい ClaimsProvider を追加します。
<ClaimsProvider> <Domain>commonaad</Domain> <DisplayName>Common AAD</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="AADCommon-OpenIdConnect"> <DisplayName>Multi-Tenant AAD</DisplayName> <Description>Login with your Contoso account</Description> <Protocol Name="OpenIdConnect"/> <Metadata> <Item Key="METADATA">https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration</Item> <!-- Update the Client ID below to the Application ID --> <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> <Item Key="DiscoverMetadataByTokenIssuer">true</Item> <!-- The key below allows you to specify each of the Azure AD tenants that can be used to sign in. Update the GUIDs below for each tenant. --> <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000,https://login.microsoftonline.com/11111111-1111-1111-1111-111111111111</Item> <!-- The commented key below specifies that users from any tenant can sign-in. Uncomment if you would like anyone with an Azure AD account to be able to sign in. --> <!-- <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/</Item> --> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_AADAppSecret"/> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/> <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 プロバイダーと区別するために使用できる一意の値に更新します。
TechnicalProfile 要素で、DisplayName の値 (たとえば、
Multi-Tenant AAD
) を更新します。 この値は、サインイン ページのサインイン ボタンに表示されます。client_id先ほど登録した Microsoft Entra マルチテナント アプリケーションのアプリケーション ID に設定します。
[CryptographicKeys] で、StorageReferenceId の値を、前に作成したポリシー キーの名前に更新します。 たとえば、
B2C_1A_AADAppSecret
のようにします。
アクセスを制限する
https://login.microsoftonline.com/
の値として を使用すると、すべての Microsoft Entra ユーザーがアプリケーションにサインインできます。 有効なトークン発行者の一覧を更新し、サインインできる Microsoft Entra テナント ユーザーの特定のリストへのアクセスを制限します。
値を取得するには、ユーザーにサインインさせる Microsoft Entra テナントごとに OpenID Connect 検出メタデータを確認します。 メタデータ URL の形式は https://login.microsoftonline.com/your-tenant/v2.0/.well-known/openid-configuration
に似ています。ここで、 your-tenant
は Microsoft Entra テナント名です。 例えば次が挙げられます。
https://login.microsoftonline.com/fabrikam.onmicrosoft.com/v2.0/.well-known/openid-configuration
サインインに使用する必要がある Microsoft Entra テナントごとに、次の手順を実行します。
- ブラウザーを開き、テナントの OpenID Connect メタデータ URL に移動します。
issuer
オブジェクトを見つけて、その値を記録します。 見た目はhttps://login.microsoftonline.com/ aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0
に似ているべきです。 - 値をコピーして ValidTokenIssuerPrefixes キーに貼り付けます。 複数の発行者をコンマで区切ります。 前の
ClaimsProvider
XML サンプルに、2 つの発行者がある例が表示されます。
ユーザー体験を追加する
この時点で、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="AzureADCommonExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="AzureADCommonExchange" TechnicalProfileReferenceId="AADCommon-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
が表示されます。 - [ 今すぐ実行 ] ボタンを選択します。
- サインアップまたはサインイン ページで、 共通の Microsoft Entra ID を選択して Microsoft Entra アカウントでサインインします。
マルチテナント サインイン機能をテストするには、別の Microsoft Entra テナントに存在するユーザーの資格情報を使用して、最後の 2 つの手順を実行します。 [今すぐ実行] エンドポイントをコピーし、プライベート ブラウザー ウィンドウ (たとえば、Google Chrome の Incognito モードや Microsoft Edge の InPrivate ウィンドウ) で開きます。 プライベート ブラウザー ウィンドウで開くと、現在キャッシュされている Microsoft Entra 資格情報を使用しないことで、完全なユーザー体験をテストできます。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。
こちらも参照ください
- Microsoft Entra トークンをアプリケーションに渡す方法について説明します。
- Microsoft Entra マルチテナント フェデレーション ライブ デモと、Microsoft Entra アクセス トークン Live デモを渡す方法を確認する