Поделиться через


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

Для начала с помощью селектора Choose a policy type (Выбрать тип политики) выберите тип пользовательской политики. Azure Active Directory B2C предлагает два метода определения способа взаимодействия пользователей с вашими приложениями: с помощью предопределенных потоков пользователей или полностью настраиваемых пользовательских политик. Действия, которые необходимо выполнить, отличаются для каждого метода.

Эта возможность доступна только для пользовательских политик. Чтобы ознакомиться с этапами установки, в предыдущем селекторе выберите Настраиваемая политика.

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

Необходимые компоненты

Примечание.

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

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

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

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

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

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

  4. Выберите Создать регистрацию.

  5. Введите значение Name (Имя) для приложения. Например, Azure AD B2C App.

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

  7. В поле URI перенаправления выберите значение Интернет и введите строчными буквами указанный ниже 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_namegiven_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. В поле Секрет введите ранее записанный секрет клиента.
  8. Для параметра Использование ключа выберите Signature.
  9. Выберите Создать.

Настройка идентификатора Microsoft Entra в качестве поставщика удостоверений

Чтобы пользователи могли войти с помощью учетной записи 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">00000000-0000-0000-0000-000000000000</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 уникальное значение, позволяющее отличить этот поставщик удостоверений от других.

  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 Подключение для каждого клиента Microsoft Entra, из которых вы хотите войти. Формат URL-адреса метаданных аналогичен https://login.microsoftonline.com/your-tenant/v2.0/.well-known/openid-configurationyour-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/00000000-0000-0000-0000-000000000000/v2.0.
  2. Скопируйте и вставьте значение в ключ ValidTokenIssuerPrefixes. Несколько издателей разделяются запятыми. Пример с двумя издателями можно увидеть в предыдущем примере XML-файла ClaimsProvider.

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

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

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

В следующем примере в качестве значения параметра ReferenceId пути взаимодействия пользователя CustomSignUpSignIn задано 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.

Следующие шаги