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

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

Важно!

Начиная с 30 сентября 2021 г. Google прекращает поддержку входа через веб-представление. Если ваши приложения проверяют подлинность пользователей с помощью встроенного веб-представления и вы используете федерацию Google с Azure AD B2C, то пользователи Google Gmail не смогут пройти проверку подлинности. Подробнее.

Примечание

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

Предварительные требования

Создание приложения Google

Чтобы включить вход для пользователей с учетной записью Google в Azure Active Directory B2C (Azure AD B2C), необходимо создать приложение в консоли разработчика Google. Дополнительные сведения см. в разделе Настройка OAuth 2.0. Если у вас еще нет учетной записи Google, вы можете зарегистрироваться по адресу https://accounts.google.com/signup.

  1. Выполните вход в консоль разработчиков Google с учетными данными для учетной записи Google.
  2. В левом верхнем углу страницы выберите список проектов, а затем щелкните Создать проект.
  3. Введите имя в поле Имя проекта и щелкните Создать.
  4. С помощью раскрывающегося списка проектов в левой верхней части экрана убедитесь, что вы используете новый проект. Выберите свой проект и нажмите кнопку Открыть.
  5. В меню слева выберите пункт Интерфейсы API и службы, а затем выберите Экран получения согласия OAuth. Щелкните Внешний, а затем — Создать.
    1. Введите значение Name (Имя) для приложения.
    2. Выберите Адрес электронной почты службы поддержки пользователей.
    3. В разделе Домен приложения введите ссылку на домашнюю страницу приложения, ссылку на политику конфиденциальности приложения и ссылку на условия обслуживания приложения.
    4. В разделе Авторизованные домены введите b2clogin.com.
    5. В разделе Контактные данные разработчика введите разделенные запятыми сообщения электронной почты Google, чтобы уведомить вас о любых изменениях в проекте.
    6. Щелкните Сохранить.
  6. Выберите Учетные данные в меню слева, а затем выберите Создать учетные данные>Идентификатор клиента Oauth.
  7. Из списка Application type (Тип приложения) выберите Web application (Веб-приложение).
    1. Введите значение Name (Имя) для приложения.
    2. В поле Авторизованные источники JavaScript введите https://your-tenant-name.b2clogin.com. Если вы используете личный домен, введите https://your-domain-name.
    3. В поле Авторизованные URI перенаправления введите https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp. Если вы используете личный домен, введите https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. Замените your-domain-name вашим личным доменом, а вместо your-tenant-name укажите имя вашего клиента. При вводе имени вашего клиента используйте только строчные буквы, даже если в Azure AD B2C имя клиента определено с помощью прописных букв.
  8. Нажмите кнопку Создать.
  9. Скопируйте значения Идентификатор клиента и Секрет клиента. Оба значения потребуются для настройки Google в качестве поставщика удостоверений в вашем клиенте. Секрет клиента — это важные учетные данные безопасности.

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

  1. Войдите на портал Azure с правами глобального администратора клиента Azure AD B2C.
  2. Убедитесь, что вы используете каталог, содержащий клиент Azure AD B2C. На панели инструментов портала выберите значок Каталоги и подписки.
  3. В настройках портала на странице Каталоги и подписки найдите свой каталог Azure AD B2C в списке Имя каталога и выберите Переключить.
  4. Выберите Все службы в левом верхнем углу окна портала Azure, найдите службу Azure AD B2C и выберите ее.
  5. Щелкните элемент Поставщики удостоверений и выберите вариант Google.
  6. Введите Имя. Например, Google.
  7. В поле Идентификатор клиента введите идентификатор клиента созданного ранее приложения Google.
  8. В качестве секрета клиента введите секрет клиента, записанный ранее.
  9. Щелкните Сохранить.

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

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

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

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

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

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

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

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

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

Определить учетную запись Google в качестве поставщика утверждений можно путем добавления ее в элемент ClaimsProviders в файле расширения политики.

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

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

  3. Добавьте новый элемент ClaimsProvider следующим образом.

    <ClaimsProvider>
      <Domain>google.com</Domain>
      <DisplayName>Google</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Google-OAuth2">
          <DisplayName>Google</DisplayName>
          <Protocol Name="OAuth2" />
          <Metadata>
            <Item Key="ProviderName">google</Item>
            <Item Key="authorization_endpoint">https://accounts.google.com/o/oauth2/auth</Item>
            <Item Key="AccessTokenEndpoint">https://accounts.google.com/o/oauth2/token</Item>
            <Item Key="ClaimsEndpoint">https://www.googleapis.com/oauth2/v1/userinfo</Item>
            <Item Key="scope">email profile</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
            <Item Key="client_id">Your Google application ID</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_GoogleSecret" />
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="id" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="google.com" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. Задайте для параметра client_id значение идентификатора приложения из регистрации приложения.

  5. Сохраните файл.

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

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

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

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAuth2" />
  </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. На странице регистрации или входа выберите Google, чтобы выполнить вход с помощью учетной записи Google.

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

Дальнейшие действия