重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
注
Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。 ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。 まだ行っていない場合は、Active Directory B2C でのカスタム ポリシーの概要に関する記事で、カスタム ポリシー スターター パックの詳細を確認してください。
概要
この記事では、別の Azure AD B2C テナントとのフェデレーションを設定する方法について説明します。 アプリケーションが Azure AD B2C で保護されている場合、他の Azure AD B2C のユーザーは既存のアカウントでログインできます。 次の図では、ユーザーは Contoso の Azure AD B2C によって保護されているアプリケーションに、 Fabrikam の Azure AD B2C テナントによって管理されているアカウントを使用してサインインできます。 この場合、Contoso の Azure AD B2C によって保護されているアプリケーションがサインインを試みる前に、ユーザー アカウントが Fabrikam のテナントに存在する必要があります。
[前提条件]
- ユーザーが サインアップしてアプリケーションにサインインできるように、ユーザー フローを作成します。
- 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 テナントでは無効になっています。
Azure AD B2C アプリケーションを作成する
別の Azure AD B2C テナント (Fabrikam など) のアカウントを持つユーザーのサインインを有効にするには、Azure AD B2C (Contoso など) で次のようにします。
アプリケーションを作成します。
Azure portal にサインインします。
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
Azure portal で、 [Azure AD B2C] を検索して選択します。
[アプリの登録] を選択し、[新しい登録] を選択します。
アプリケーションの名前を入力します。 たとえば、「 ContosoApp 」のように入力します。
[サポートされているアカウントの種類] で、[(ユーザー フローを使用してユーザーを認証するための) 任意の ID プロバイダーまたは組織のディレクトリのアカウント] を選択します。
[リダイレクト URI] で [Web] を選択し、次の URL をすべて小文字で入力します (
your-B2C-tenant-name
は Azure AD B2C テナントの名前 (Contoso など) に置き換えられます)。https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp
たとえば、
https://contoso.b2clogin.com/contoso.onmicrosoft.com/oauth2/authresp
のようにします。カスタム ドメインを使用する場合は、「
https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp
」と入力します。your-domain-name
をカスタム ドメインに置き換え、your-tenant-name
をテナントの名前に置き換えます。[アクセス許可] で、[ openid とoffline_accessアクセス許可に対する管理者の同意を付与する ] チェック ボックスをオンにします。
登録 を選択します。
[Azure AD B2C - アプリの登録] ページで、作成したアプリケーション (ContosoApp など) を選択します。
アプリケーションの概要ページに表示されるアプリケーション (クライアント) ID を 記録します。 これは、次のセクションで ID プロバイダーを構成するときに必要になります。
左側のメニューの [ 管理] で、[ 証明書とシークレット] を選択します。
新しいクライアント シークレットを選択します。
[説明] ボックスに、クライアント シークレットの説明を入力します。 たとえば、clientsecret1 のようにします。
[有効期限] で、シークレットが有効な期間を選択してから、 [追加] を選択します。
シークレットの値を記録します。 これは、次のセクションで ID プロバイダーを構成するときに必要になります。
Azure AD B2C を ID プロバイダーとして構成する
Azure portal にサインインします。
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
[ID プロバイダー] を選択し、[新しい OpenID Connect プロバイダー] を選択します。
名前を入力します。 たとえば、「 Fabrikam」と入力します。
[メタデータ URL] に、次の URL を入力し、
{tenant}
を Azure AD B2C テナントのドメイン名 (例: Fabrikam) に置き換えます。{policy}
を、他のテナントで構成したポリシー名に置き換えます。https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/v2.0/.well-known/openid-configuration
たとえば、
https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/B2C_1_susi/v2.0/.well-known/openid-configuration
のようにします。クライアント IDには、前に記録したアプリケーション ID を入力します。
クライアント シークレットのには、前に記録したクライアント シークレットを入力します。
[スコープ] に、
openid
を入力します。[応答の種類] と [応答モード] の既定値のままにします。
(オプション) [ドメイン] ヒントに、 直接サインインに使用するドメイン名を入力します。 たとえば、 fabrikam.com です。
[ ID プロバイダー要求マッピング] で、次の要求を選択します。
- ユーザー ID: sub
- 表示名: 名前
- 指定された名前: given_name
- 姓: family_name
- 電子メール: 電子メール
保存 を選択します。
Azure AD B2C ID プロバイダーをユーザー フローに追加する
- Azure AD B2C テナントで、[ ユーザー フロー] を選択します。
- Azure AD B2C ID プロバイダーを追加するユーザー フローをクリックします。
- [ソーシャル ID プロバイダー] で、 [Fabrikam] を選択します。
- 保存 を選択します。
- ポリシーをテストするには、[ ユーザー フローの実行] を選択します。
-
[アプリケーション] で、以前に登録した testapp1 という名前の Web アプリケーションを選択します。
応答 URL に
https://jwt.ms
が表示されます。 - [ ユーザー フローの実行 ] ボタンを選択します。
- サインアップ ページまたはサインイン ページで、 [Fabrikam ] を選択して、他の Azure AD B2C テナントでサインインします。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。
ポリシー キーを作成する
前に作成したアプリケーション キーを Azure AD B2C テナントに格納する必要があります。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [ ポリシー] で、[ Identity Experience Framework] を選択します。
- [ ポリシー キー ] を選択し、[追加] を選択 します。
-
[オプション] で、[
Manual
] を選択します。 - ポリシー キーの名前を入力します。 たとえば、
FabrikamAppSecret
のようにします。 プレフィックスB2C_1A_
は、キーの作成時にキーの名前に自動的に追加されるため、次のセクションの XML での参照は to B2C_1A_FabrikamAppSecret になります。 - [ シークレット] に、前に記録したクライアント シークレットを入力します。
- [ キーの使用法] で、[
Signature
] を選択します。 - を選択してを作成します。
Azure AD B2C を ID プロバイダーとして構成する
ユーザーが別の Azure AD B2C テナント (Fabrikam) のアカウントを使用してサインインできるようにするには、Azure AD B2C がエンドポイントを介して通信できる要求プロバイダーとして、他の Azure AD B2C を定義する必要があります。 エンドポイントは、特定のユーザーが認証されたことを確認するために Azure AD B2C によって使用されるクレームのセットを提供します。
Azure AD B2C をクレーム プロバイダーとして定義するには、ポリシーの拡張ファイルの ClaimsProvider 要素に Azure AD B2C を追加します。
TrustFrameworkExtensions.xml ファイルを開きます。
ClaimsProviders 要素を検索します。 存在しない場合は、ルート要素の下に追加します。
次のように新しい ClaimsProvider を追加します。
<ClaimsProvider> <Domain>fabrikam.com</Domain> <DisplayName>Federation with Fabrikam tenant</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="AzureADB2CFabrikam-OpenIdConnect"> <DisplayName>Fabrikam</DisplayName> <Protocol Name="OpenIdConnect"/> <Metadata> <!-- Update the Client ID below to the Application ID --> <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item> <!-- Update the metadata URL with the other Azure AD B2C tenant name and policy name --> <Item Key="METADATA">https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/v2.0/.well-known/openid-configuration</Item> <Item Key="UsePolicyInRedirectUri">false</Item> <Item Key="response_types">code</Item> <Item Key="scope">openid</Item> <Item Key="response_mode">form_post</Item> <Item Key="HttpBinding">POST</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_FabrikamAppSecret"/> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="emails"/> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
次の XML 要素を関連する値で更新します。
XML 要素 価値 クレームプロバイダー\ドメイン 直接サインインに使用されるドメイン名。 直接サインインで使用するドメイン名を入力します。 たとえば、 fabrikam.com です。 技術プロファイル\表示名 この値は、サインイン画面のサインイン ボタンに表示されます。 たとえば、 Fabrikam です。 メタデータ\client_id ID プロバイダーのアプリケーション識別子。 クライアント ID を、他の Azure AD B2C テナントで前に作成したアプリケーション ID で更新します。 メタデータ\METADATA OpenID Connect ID プロバイダー設定ドキュメント (OpenID Well-Known 設定エンドポイントとも呼ばれる) を指す URL。 次の URL を入力し、 {tenant}
を他の Azure AD B2C テナント (Fabrikam) のドメイン名に置き換えます。{tenant}
を他のテナントで構成するポリシー名に置き換え、{policy]
をポリシー名https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/v2.0/.well-known/openid-configuration
に置き換えてください。 たとえば、https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/B2C_1_susi/v2.0/.well-known/openid-configuration
のようにします。クリプトグラフィックキー StorageReferenceId の値を、前に作成したポリシー キーの名前に更新します。 たとえば、 B2C_1A_FabrikamAppSecret
のようにします。
ユーザー体験を追加する
この時点で、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="AzureADB2CFabrikamExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="AzureADB2CFabrikamExchange" TechnicalProfileReferenceId="AzureADB2CFabrikam-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
が表示されます。 - [ 今すぐ実行 ] ボタンを選択します。
- サインアップ ページまたはサインイン ページで、 [Fabrikam ] を選択して、他の Azure AD B2C テナントでサインインします。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。
次のステップ
他の Azure AD B2C トークンをアプリケーションに渡す方法について説明します。