Настройка входа для мультитенантного идентификатора Microsoft Entra с помощью пользовательских политик в Azure Active Directory B2C

Это важно

Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".

Прежде чем начать, используйте селектор типа политики в верхней части этой страницы, чтобы выбрать тип политики, которую вы настроите. Azure Active Directory B2C предлагает два метода определения способа взаимодействия пользователей с вашими приложениями: с помощью предопределенных потоков пользователей или полностью настраиваемых пользовательских политик. Действия, которые необходимо выполнить, отличаются для каждого метода.

Эта функция доступна только для пользовательских политик. Для действий по настройке выберите пользовательскую политику в предыдущем селекторе.

В этой статье показано, как включить вход для пользователей с помощью мультитенантной конечной точки для идентификатора Microsoft Entra, позволяя пользователям из нескольких клиентов Microsoft Entra войти с помощью Azure AD B2C без необходимости настраивать поставщика удостоверений для каждого клиента. Однако гостевые участники в любом из этих арендаторов не смогут войти в систему. Для этого необходимо настроить каждый клиент по отдельности.

Предпосылки

Замечание

В этой статье предполагается, что начальный пакет SocialAndLocalAccounts используется в предыдущих шагах, упомянутых в предварительных требованиях.

Регистрация приложения Microsoft Entra

Чтобы пользователи могли войти в Azure AD B2C с помощью учетной записи Microsoft Entra, сначала необходимо создать приложение в клиенте Microsoft Entra на портале Azure. Подробнее см. статью о регистрации приложения на платформе удостоверений Майкрософт.

  1. Войдите на портал Azure.

  2. Если у вас есть доступ к нескольким клиентам, щелкните значок "Параметры " в верхнем меню, чтобы переключиться на клиент Microsoft Entra из меню каталогов и подписок .

  3. Выберите все службы в левом верхнем углу портала Azure, а затем найдите и выберите регистрацию приложений.

  4. Выберите Новая регистрация.

  5. Введите Имя для вашего приложения. Например: Azure AD B2C App.

  6. Выберите учетные записи в любом каталоге организации (любой каталог Microsoft Entra — Multitenant) для этого приложения.

  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. Выберите Зарегистрировать. Запишите идентификатор приложения (клиента) для использования на следующем шаге.

  9. Выберите Сертификаты & Секреты, а затем выберите Новый секрет клиента.

  10. Введите описание секрета, выберите срок действия и нажмите кнопку "Добавить". Запишите значение секрета для использования на следующем шаге.

Замечание

Секрет клиента не будет отображаться снова после этого момента. Если вы не сделаете запись об этом, вам придется создать новую.

[Необязательно] Настройка необязательных утверждений

Если вы хотите получить family_name и given_name утверждения из идентификационных данных Microsoft Entra, вы можете настроить необязательные утверждения для своего приложения в пользовательском интерфейсе портала Azure или манифесте приложения. Дополнительные сведения см. в разделе "Как предоставить необязательные утверждения для приложения Microsoft Entra".

  1. Войдите на портал Azure. Найдите и выберите Microsoft Entra ID.
  2. В разделе "Управление" выберите "Регистрация приложений".
  3. Выберите приложение, для которого нужно настроить необязательные утверждения в списке.
  4. В разделе "Управление" выберите конфигурацию токена.
  5. Выберите "Добавить необязательное утверждение".
  6. Для типа токена выберите идентификатор.
  7. Выберите необязательные утверждения, которые нужно добавить, family_nameи given_name.
  8. Нажмите кнопку "Добавить". Если появится разрешение Microsoft Graph на электронную почту (требуется для отображения утверждений в токене), включите его, затем снова выберите Добавить.

[Необязательно] Проверка подлинности приложения

Проверка издателя помогает пользователям понять подлинность зарегистрированного приложения. Проверенное приложение означает, что издатель приложения проверил свою личность с помощью Microsoft Partner Network (MPN). Узнайте, как пометить приложение меткой "Проверенный издатель".

Создание ключа политики

Теперь необходимо сохранить ключ приложения, созданный в клиенте Azure AD B2C.

  1. Если у вас есть доступ к нескольким клиентам, щелкните значок Настройки в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню Каталоги и подписки.
  2. Выберите все службы в левом верхнем углу портала Azure, а затем найдите и выберите Azure AD B2C.
  3. В разделе "Политики" выберите Identity Experience Framework.
  4. Выберите ключи политики и нажмите кнопку "Добавить".
  5. В разделе "Параметры" выберите Manual.
  6. Введите имя для ключа политики. Например: AADAppSecret. Префикс B2C_1A_ добавляется автоматически в имя ключа при его создании, поэтому его ссылка в XML в следующем разделе — B2C_1A_AADAppSecret.
  7. В поле Secret введите секрет клиента, который вы записали ранее.
  8. Для использования ключа выберите Signature.
  9. Нажмите кнопку "Создать".

Настроить Microsoft Entra ID в качестве поставщика идентификации

Чтобы пользователи могли войти с помощью учетной записи Microsoft Entra, необходимо определить идентификатор Microsoft Entra в качестве поставщика утверждений, с которым Azure AD B2C может взаимодействовать через конечную точку. Конечная точка предоставляет набор утверждений, используемых Azure AD B2C для проверки подлинности определенного пользователя.

Идентификатор Microsoft Entra можно определить в качестве поставщика утверждений, добавив идентификатор Microsoft Entra в элемент ClaimsProvider в файл расширения политики.

  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 измените значение домена на уникальное значение, которое можно использовать для отличия от других поставщиков удостоверений.

  5. В элементе TechnicalProfile обновите значение displayName, например Multi-Tenant AAD. Это значение отображается на кнопке входа на странице входа.

  6. Задайте client_id в качестве идентификатора зарегистрированного ранее мультитенантного приложения Microsoft Entra.

  7. В разделе CryptographicKeys обновите значение StorageReferenceId до имени ключа политики, созданного ранее. Например: B2C_1A_AADAppSecret.

Ограничить доступ

Использование https://login.microsoftonline.com/ в качестве значения для ValidTokenIssuerPrefixes позволяет всем пользователям Microsoft Entra войти в приложение. Обновите список действительных издателей токенов и ограничьте доступ, разрешив вход только определенным пользователям клиента Microsoft Entra.

Чтобы получить значения, ознакомьтесь с метаданными обнаружения OpenID Connect для каждого арендатора Microsoft Entra, из которого вы хотите, чтобы пользователи входили в систему. Формат 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. Откройте браузер и перейдите по URL-адресу метаданных OpenID Connect для клиента. issuer Найдите объект и запишите его значение. Он должен выглядеть примерно так, как https://login.microsoftonline.com/ aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0.
  2. Скопируйте и вставьте значение в ключ ValidTokenIssuerPrefixes . Разделите нескольких эмитентов запятой. Пример с двумя издателями отображается в предыдущем ClaimsProvider примере XML.

Добавить пользовательский сценарий

На этом этапе поставщик удостоверений настроен, но он еще не доступен на любой из страниц входа. Если у вас нет собственного пользовательского пути, создайте дубликат существующего пути пользователя шаблона, в противном случае перейдите к следующему шагу.

  1. Откройте файлTrustFrameworkBase.xml из начального пакета.
  2. Найдите и скопируйте все содержимое элемента UserJourney , который включает в себя Id="SignUpOrSignIn".
  3. Откройте TrustFrameworkExtensions.xml и найдите элемент UserJourneys . Если элемент не существует, добавьте его.
  4. Вставьте все содержимое элемента UserJourney , скопированного в качестве дочернего элемента UserJourneys .
  5. Переименуйте идентификатор пути пользователя. Например: Id="CustomSignUpSignIn".

Добавьте поставщика удостоверений в путь пользователя

Теперь, когда у вас есть путь пользователя, добавьте нового поставщика идентификации в этот путь. Сначала вы добавляете кнопку входа, а затем связываете кнопку с действием. Действие — это технический профиль, который вы создали ранее.

  1. Найдите элемент шага оркестрации, который включает в себя Type="CombinedSignInAndSignUp" или Type="ClaimsProviderSelection" в процессе работы пользователя. Обычно это первый шаг оркестрации. Элемент ClaimsProviderSelections содержит список поставщиков удостоверений, с которыми пользователь может войти. Порядок элементов определяет порядок кнопок входа, представленных пользователю. Добавьте XML-элемент ClaimsProviderSelection . Задайте для параметра TargetClaimsExchangeId понятное имя.

  2. На следующем шаге оркестрации добавьте элемент ClaimsExchange . Установите Id на значение идентификатора целевого обмена утверждениями. Обновите значение TechnicalProfileReferenceId на идентификатор ранее созданного технического профиля.

Следующий XML-код демонстрирует первые два этапа оркестрации взаимодействия пользователя с поставщиком удостоверений:

<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 в поддерживающей стороне. Обновите ReferenceId, чтобы он соответствовал идентификатору пути пользователя, где вы добавили провайдера идентификации.

В следующем примере для CustomSignUpSignIn пути пользователя для параметра ReferenceId задано значение CustomSignUpSignIn:

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

Отправка настраиваемой политики

  1. Войдите на портал Azure.
  2. Щелкните значок каталога и подписки на панели инструментов портала, а затем выберите каталог, содержащий клиент Azure AD B2C.
  3. В портале Azure найдите и выберите Azure AD B2C.
  4. В разделе "Политики" выберите Identity Experience Framework.
  5. Выберите " Отправить настраиваемую политику", а затем отправьте два измененных файла политики в следующем порядке: политика расширения, например TrustFrameworkExtensions.xml, политика проверяющей стороны, например SignUpSignIn.xml.

Проверка настраиваемой политики

  1. Выберите политику доверенной стороны, например B2C_1A_signup_signin.
  2. Для приложения выберите веб-приложение, которое вы ранее зарегистрировали. В поле URL-адрес ответа должно содержаться значение https://jwt.ms.
  3. Нажмите кнопку "Запустить сейчас ".
  4. На странице регистрации или входа выберите common Microsoft Entra ID , чтобы войти с помощью учетной записи Microsoft Entra.

Чтобы проверить возможность многотенантного входа, выполните последние два шага, используя учетные данные для пользователя, существующего с другим клиентом Microsoft Entra. Скопируйте конечную точку запуска и откройте ее в частном окне браузера, например режим инкогнито в Google Chrome или окно InPrivate в Microsoft Edge. Открытие в частном окне браузера позволяет протестировать весь путь пользователя, не используя какие-либо текущие закэшированные учетные данные Microsoft Entra.

Если процесс входа выполнен успешно, браузер перенаправляется на https://jwt.ms, где отображается содержимое токена, возвращаемого Azure AD B2C.

См. также