次の方法で共有


Azure Active Directory B2C でカスタム ポリシーを使用してマルチテナント Microsoft Entra ID のサインインを設定する

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。

この機能は、カスタム ポリシーでのみ使用できます。 セットアップ手順については、前のセレクターで [カスタム ポリシー] を選択します。

この記事では、Microsoft Entra ID のマルチテナント エンドポイントを使用してユーザーのサインインを有効にする方法について説明します。これにより、複数の Microsoft Entra テナントのユーザーは、テナントごとに ID プロバイダーを構成しなくても、Azure AD B2C を使用してサインインできます。 ただし、これらのテナントのゲスト メンバー はサインインできません 。 そのためには、 各テナントを個別に構成する必要があります。

[前提条件]

この記事では、前提条件で説明した前の手順で SocialAndLocalAccounts スターター パックを使用することを前提としています。

Microsoft Entra アプリを登録する

ユーザーが Microsoft Entra アカウントを使用して Azure AD B2C にサインインできるようにするには、まず 、Azure portal から Microsoft Entra テナントでアプリケーションを作成する必要があります。 詳細については、Microsoft ID プラットフォームにアプリケーションを登録する方法に関するページを参照してください。

  1. Azure portal にサインインします。

  2. 複数のテナントにアクセスできる場合は、上部メニューの [設定] アイコンを選択して、[ ディレクトリ + サブスクリプション ] メニューから Microsoft Entra テナントに切り替えます。

  3. Azure portal の左上隅にある [ すべてのサービス ] を選択し、[ アプリの登録] を検索して選択します。

  4. [新規登録] を選択します。

  5. アプリケーションの 名前 を入力します。 たとえば、Azure AD B2C App のようにします。

  6. このアプリケーション の任意の組織ディレクトリ (任意の Microsoft Entra ディレクトリ – マルチテナント) のアカウント を選択します。

  7. リダイレクト 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 をテナントの名前に置き換えます。

  8. 登録 を選択します。 後の手順で使用する アプリケーション (クライアント) ID を 記録します。

  9. [ 証明書とシークレット] を選択し、[ 新しいクライアント シークレット] を選択します。

  10. シークレットの 説明 を入力し、有効期限を選択して、[ 追加] を選択します。 後の手順で使用するシークレットの を記録します。

この時点以降、クライアント シークレットは再び表示されません。 記録を作成しない場合は、それを新しく作成する必要があります。

[オプション]オプションの要求の構成

Microsoft Entra ID からfamily_name および given_name の要求を取得するには、Azure ポータルの UI またはアプリケーション マニフェストでアプリケーションの省略可能な要求を構成できます。 詳細については、「 Microsoft Entra アプリに省略可能な要求を提供する方法」を参照してください

  1. Azure portal にサインインします。 Microsoft Entra ID を検索して選択します。
  2. [ 管理 ] セクションで、[ アプリの登録] を選択します。
  3. オプションの要求を構成するアプリケーションを一覧から選択します。
  4. [ 管理 ] セクションで、[ トークンの構成] を選択します。
  5. [ 省略可能な要求の追加] を選択します。
  6. [トークンの種類] で 、[ID] を選択します
  7. 追加する省略可能な要求を選択し、family_namegiven_name を追加します。
  8. [] を選択し、[] を追加します。 Microsoft Graph の電子メールアクセス許可を有効にする (トークンに要求を表示するために必要) が表示された場合は、有効にして、[追加] をもう一度選択します。

[省略可能]アプリの信頼性を確認する

発行元の確認は 、登録したアプリの信頼性をユーザーが理解するのに役立ちます。 検証済みアプリとは、アプリの発行元が Microsoft Partner Network (MPN) を使用して ID を 検証したことを 意味します。 アプリを発行者確認済みとしてマークする方法についてご確認ください。

ポリシー キーを作成する

作成したアプリケーション キーを Azure AD B2C テナントに格納する必要があります。

  1. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  2. Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
  3. [ ポリシー] で、[ Identity Experience Framework] を選択します。
  4. [ ポリシー キー ] を選択し、[追加] を選択 します
  5. [オプション] で、[Manual] を選択します。
  6. ポリシー キーの名前を入力します。 たとえば、AADAppSecret のようにします。 プレフィックス B2C_1A_ は、作成時にキーの名前に自動的に追加されるため、次のセクションの XML での参照は B2C_1A_AADAppSecret
  7. [ シークレット] に、前に記録したクライアント シークレットを入力します。
  8. [ キーの使用法] で、[ Signature] を選択します。
  9. を選択してを作成します。

Microsoft Entra ID を ID プロバイダーとして構成する

ユーザーが Microsoft Entra アカウントを使用してサインインできるようにするには、Azure AD B2C がエンドポイント経由で通信できるクレーム プロバイダーとして Microsoft Entra ID を定義する必要があります。 エンドポイントは、特定のユーザーが認証されたことを確認するために Azure AD B2C によって使用されるクレームのセットを提供します。

Microsoft Entra ID をクレーム プロバイダーとして定義するには、ポリシーの拡張ファイルの ClaimsProvider 要素に Microsoft Entra ID を追加します。

  1. SocialAndLocalAccounts/TrustFrameworkExtensions.xml ファイルを開きます (前提条件で使用したファイルを参照してください)。

  2. ClaimsProviders 要素を検索します。 存在しない場合は、ルート要素の下に追加します。

  3. 次のように新しい 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>
    
  4. ClaimsProvider 要素で、Domain の値を、他の ID プロバイダーと区別するために使用できる一意の値に更新します。

  5. TechnicalProfile 要素で、DisplayName の値 (たとえば、Multi-Tenant AAD) を更新します。 この値は、サインイン ページのサインイン ボタンに表示されます。

  6. client_id先ほど登録した Microsoft Entra マルチテナント アプリケーションのアプリケーション ID に設定します。

  7. [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 テナントごとに、次の手順を実行します。

  1. ブラウザーを開き、テナントの OpenID Connect メタデータ URL に移動します。 issuer オブジェクトを見つけて、その値を記録します。 見た目はhttps://login.microsoftonline.com/ aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0に似ているべきです。
  2. 値をコピーして ValidTokenIssuerPrefixes キーに貼り付けます。 複数の発行者をコンマで区切ります。 前の ClaimsProvider XML サンプルに、2 つの発行者がある例が表示されます。

ユーザー体験を追加する

この時点で、ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 独自のカスタム ユーザー体験がない場合は、既存のテンプレート ユーザー体験の複製を作成します。それ以外の場合は、次の手順に進みます。

  1. スターター パックから TrustFrameworkBase.xml ファイルを開きます。
  2. を含む Id="SignUpOrSignIn" 要素の内容全体を検索してコピーします。
  3. TrustFrameworkExtensions.xml を開き、UserJourneys 要素を見つけます。 要素が存在しない場合は、要素を追加します。
  4. UserJourneys 要素の子としてコピーした UserJourney 要素の内容全体を貼り付けます。
  5. ユーザージャーニーの ID を変更します。 たとえば、Id="CustomSignUpSignIn" のようにします。

ID プロバイダーをユーザー体験に追加する

これでユーザー体験が作成されたので、新しい ID プロバイダーをユーザー体験に追加します。 最初にサインイン ボタンを追加し、そのボタンをアクションにリンクします。 あなたが以前に作成した技術プロファイルがこのアクションです。

  1. ユーザー体験に Type="CombinedSignInAndSignUp"または Type="ClaimsProviderSelection" を含むオーケストレーション ステップ要素を見つけます。 通常は、オーケストレーションの最初の手順です。 ClaimsProviderSelections 要素には、ユーザーがサインインできる ID プロバイダーの一覧が含まれています。 要素の順序は、ユーザーに表示されるサインイン ボタンの順序を制御します。 ClaimsProviderSelection XML 要素を追加します。 TargetClaimsExchangeId の値をフレンドリ名に設定します。

  2. 次のオーケストレーション手順で、 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 ユーザー体験の ReferenceIdCustomSignUpSignInに設定されています。

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

カスタム ポリシーをアップロードする

  1. Azure portal にサインインします。
  2. ポータル のツール バーで [ディレクトリ + サブスクリプション ] アイコンを選択し、Azure AD B2C テナントが含まれているディレクトリを選択します。
  3. Azure portal で、 [Azure AD B2C] を検索して選択します。
  4. [ ポリシー] で、[ Identity Experience Framework] を選択します。
  5. [ カスタム ポリシーのアップロード] を選択し、変更した 2 つのポリシー ファイルを次の順序でアップロードします。拡張機能ポリシー ( TrustFrameworkExtensions.xmlなど)、証明書利用者ポリシー ( SignUpSignIn.xmlなど)。

カスタム ポリシーをテストする

  1. 関連パーティポリシー(例: B2C_1A_signup_signin)を選択してください。
  2. [ アプリケーション] で、 以前に登録した Web アプリケーションを選択します。 応答 URLhttps://jwt.msが表示されます。
  3. [ 今すぐ実行 ] ボタンを選択します。
  4. サインアップまたはサインイン ページで、 共通の Microsoft Entra ID を選択して Microsoft Entra アカウントでサインインします。

マルチテナント サインイン機能をテストするには、別の Microsoft Entra テナントに存在するユーザーの資格情報を使用して、最後の 2 つの手順を実行します。 [今すぐ実行] エンドポイントをコピーし、プライベート ブラウザー ウィンドウ (たとえば、Google Chrome の Incognito モードや Microsoft Edge の InPrivate ウィンドウ) で開きます。 プライベート ブラウザー ウィンドウで開くと、現在キャッシュされている Microsoft Entra 資格情報を使用しないことで、完全なユーザー体験をテストできます。

サインイン プロセスが成功すると、ブラウザーは https://jwt.ms にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。

こちらも参照ください