Настройка регистрации и входа с учетной записью Azure AD B2C из другого клиента Azure AD B2C

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

Примечание.

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

Обзор

В этой статье описывается, как настроить федерацию с другим клиентом Azure AD B2C. Если ваши приложения защищены через Azure AD B2C, пользователи из других приложений AAD B2C могут входить в систему с использованием существующих учетных записей. На следующей схеме пользователи могут войти в приложение, защищенное Azure AD B2C Компании Contoso, с учетной записью, управляемой клиентом Fabrikam в Azure AD B2C. В этом случае учетная запись пользователя должна присутствовать в клиенте Fabrikam, прежде чем приложение, защищенное Azure AD B2C Компании Contoso, может попытаться войти в систему.

Azure AD B2C federation with another Azure AD B2C tenant

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

Проверка домена издателя приложения

По состоянию на ноябрь 2020 года новые регистрации приложений отображаются как непроверенные в запросе на согласие пользователя, пока домен издателя приложения не будет проверени удостоверения компании не будут проверены с использованием Microsoft Partner Network и сопоставлены с приложением. (Дополнительные сведения об этом изменении.) Обратите внимание, что для потоков пользователей Azure AD B2C домен издателя отображается только при использовании учетной записи Майкрософт или другого клиента Microsoft Entra в качестве поставщика удостоверений. Чтобы удовлетворить эти новые требования, выполните следующие действия:

  1. Проверьте удостоверение компании, используя учетную запись Microsoft Partner Network (MPN). Этот процесс используется для проверки сведений о вашей компании и основном контактном лице компании.
  2. Выполните процесс проверки издателя, чтобы связать учетную запись MPN с регистрацией приложения с помощью одного из следующих параметров:

Создание приложения Azure AD B2C

Чтобы включить вход для пользователей с учетной записью из другого клиента Azure AD B2C (например, Fabrikam) в Azure AD B2C (например, Contoso), выполните следующие действия:

  1. Создайте пользовательский поток или пользовательскую политику.
  2. Затем создайте приложение в Azure AD B2C, как описано в этом разделе.

Выполните эти действия, чтобы создать приложение.

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

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

  3. В портале Azure найдите и выберите Azure AD B2C.

  4. Щелкните Регистрация приложений и выберите Новая регистрация.

  5. Введите имя приложения. Например, ContosoApp.

  6. В области Поддерживаемые типы учетных записей выберите Учетные записи в любом поставщике удостоверений или в организационном каталоге (для аутентификации пользователей с помощью потока пользователей).

  7. Выберите для URI перенаправления значение Интернет, а затем введите следующий 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 укажите имя вашего клиента.

  8. В разделе "Разрешения" установите флажок Предоставьте согласие администратора для разрешений openid и offline_access..

  9. Выберите Зарегистрировать.

  10. На странице "Регистрация приложений" Azure AD B2C выберите созданное приложение, например ContosoApp.

  11. Запишите значение параметра Идентификатор приложения (клиента), отображаемого на странице обзора приложения. Этот идентификатор потребуется при настройке поставщика удостоверений в следующем разделе.

  12. В меню слева в разделе Управление выберите Сертификаты и секреты.

  13. Щелкните Создать секрет клиента.

  14. Введите описание секрета клиента в поле Описание. Например, clientsecret1.

  15. В разделе Истекает выберите срок действия секрета, а затем выберите Добавить.

  16. Запишите значение секрета в поле Значение. Этот идентификатор потребуется при настройке поставщика удостоверений в следующем разделе.

Настройка Azure AD B2C в качестве поставщика удостоверений

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

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

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

  4. Щелкните элемент Поставщики удостоверений, а затем выберите Новый поставщик OpenID Connect.

  5. Введите Имя. Например, введите Fabrikam.

  6. В поле 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.

  7. В поле Идентификатор клиента введите ранее записанное значение идентификатора приложения.

  8. В поле Секрет клиента введите ранее записанное значение секрета клиента.

  9. Для параметра Область введите значение openid.

  10. Сохраните значения по умолчанию для параметров Тип ответа и Режим ответа.

  11. (Необязательно) Для параметра Указание домена введите доменное имя, которое вы хотите использовать для прямого входа. Например, fabrikam.com.

  12. В разделе Сопоставление утверждений поставщика удостоверений выберите следующие утверждения:

    • Идентификатор пользователя: sub;
    • Display name: name;
    • Given name: given_name;
    • Surname: family_name;
    • Электронная почта: электронная почта.
  13. Выберите Сохранить.

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

  1. В клиенте Azure AD B2C выберите Потоки пользователей.
  2. Выберите поток пользователя, для которого нужно добавить поставщик удостоверений Azure AD B2C.
  3. В разделе Поставщики удостоверений в социальных сетях выберите Fabrikam.
  4. Выберите Сохранить.
  5. Чтобы проверить политику, выберите Выполнить поток пользователя.
  6. В разделе Приложение выберите зарегистрированное ранее веб-приложение с именем testapp1. В поле URL-адрес ответа должно содержаться значение https://jwt.ms.
  7. Нажмите кнопку Выполнить поток пользователя.
  8. На странице регистрации или входа выберите Fabrikam, чтобы войти с другого клиента Azure AD B2C.

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

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

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

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

Настройка Azure AD B2C в качестве поставщика удостоверений

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

Вы можете определить Azure AD B2C в качестве поставщика утверждений, добавив Azure AD B2C к элементу ClaimsProvider в файле расширения политики.

  1. Откройте файл TrustFrameworkExtensions.xml.

  2. Найдите элемент ClaimsProviders. Если он не существует, добавьте его в корневой элемент.

  3. Добавьте новый элемент 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">00000000-0000-0000-0000-000000000000</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>
    
  4. Обновите следующие XML-элементы с помощью соответствующего значения:

    XML-элемент Значение
    ClaimsProvider\Domain Доменное имя, используемое для прямого входа. Введите доменное имя, которое будет использоваться при прямом входе. Например, fabrikam.com.
    TechnicalProfile\DisplayName Это значение будет отображаться на кнопке входа на экране входа в систему. Например, Fabrikam.
    Metadata\client_id Идентификатор приложения поставщика удостоверений. Обновите идентификатор клиента с помощью идентификатора приложения, созданного ранее в другом клиенте Azure AD B2C.
    Metadata\METADATA URL-адрес, указывающий на документ конфигурации поставщика удостоверений OpenID Connect, который также известен как конечная точка конфигурации OpenID. Введите следующий 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.
    CryptographicKeys Обновите значение StorageReferenceId, указав имя ключа политики, который вы создали ранее. Например, B2C_1A_FabrikamAppSecret.

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

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

  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="AzureADB2CFabrikamExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="AzureADB2CFabrikamExchange" TechnicalProfileReferenceId="AzureADB2CFabrikam-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. На странице регистрации или входа выберите Fabrikam, чтобы войти с другого клиента Azure AD B2C.

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

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

Узнайте, как передать в приложение другой токен Azure AD B2C.