Передача маркера доступа поставщика удостоверений в приложение в Azure Active Directory B2C

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

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

Azure AD B2C поддерживает только передачу маркера доступа поставщиков удостоверений OAuth 2.0, в том числе Facebook и Google. Для остальных поставщиков удостоверений утверждение возвращается пустым.

Azure AD B2C поддерживает передачу маркеров доступа от поставщиков удостоверений по протоколу OAuth 2.0 и стандарту Подключение OpenID. Для остальных поставщиков удостоверений утверждение возвращается пустым. Для получения дополнительных сведений ознакомьтесь с демонстрацией использования федерации поставщиков удостоверений.

На следующей схеме показано, как маркер поставщика удостоверений возвращается в приложение.

Identity provider pass through flow

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

Включение утверждения

  1. Войдите на портал Azure с правами глобального администратора клиента Azure AD B2C.

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

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

  4. Выберите Потоки пользователей (политики), а затем свой поток пользователя. (например, B2C_1_signupsignin1).

  5. Выберите элемент Утверждения приложения.

  6. Включите утверждение Маркер доступа поставщика удостоверений.

    Enable the Identity Provider Access Token claim

  7. Нажмите кнопку Сохранить, чтобы сохранить поток пользователя.

Тестирование потока пользователя

При тестировании приложений в Azure AD B2C может потребоваться вернуть маркер Azure AD B2C в https://jwt.ms для просмотра в нем утверждений.

  1. На странице "Обзор" потока пользователя выберите Выполнить поток пользователя.

  2. В разделе Приложение выберите зарегистрированное ранее приложение. Чтобы маркер отображался, как в приведенном ниже примере, URL-адрес ответа должен быть следующим: https://jwt.ms.

  3. Щелкните Выполнить поток пользователя, а затем войдите, используя свои учетные данные. Вы должны увидеть маркер доступа поставщика удостоверений в утверждении idp_access_token.

    Должен отобразиться результат, аналогичный следующему примеру:

    Decoded token in jwt.ms with idp_access_token block highlighted

Добавление элементов утверждения

  1. Откройте файл TrustframeworkExtensions.xml и добавьте элемент ClaimType с идентификатором identityProviderAccessToken в элемент ClaimsSchema:

    <BuildingBlocks>
      <ClaimsSchema>
        <ClaimType Id="identityProviderAccessToken">
          <DisplayName>Identity Provider Access Token</DisplayName>
          <DataType>string</DataType>
          <AdminHelpText>Stores the access token of the identity provider.</AdminHelpText>
        </ClaimType>
        ...
      </ClaimsSchema>
    </BuildingBlocks>
    
  2. Добавьте элемент OutputClaim в элемент TechnicalProfile для каждого поставщика удостоверений OAuth 2.0, для которого нужно использовать маркер доступа. В следующем примере показано добавление элемента в технический профиль Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Сохраните файл TrustframeworkExtensions.xml.

  4. Откройте файл политики проверяющей стороны, например SignUpOrSignIn.xml, и добавьте элемент OutputClaim в TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="idp_access_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  5. Сохраните файл политики.

Тестирование политики

При тестировании приложений в Azure AD B2C может потребоваться вернуть маркер Azure AD B2C в https://jwt.ms для просмотра в нем утверждений.

Передача файлов

  1. Войдите на портал Azure.
  2. Если у вас есть доступ к нескольким клиентам, выберите значок Параметры в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню каталогов и подписок.
  3. Выберите Все службы в левом верхнем углу окна портала Azure, а затем найдите и выберите Azure AD B2C.
  4. Выберите Инфраструктура процедур идентификации.
  5. На странице "Настраиваемые политики" щелкните Отправить политику.
  6. Выберите Перезаписать политику, если она существует, а затем найдите и выберите файл TrustFrameworkExtensions.xml.
  7. Выберите Отправить.
  8. Повторите шаги с 5 по 7 для файла проверяющей стороны, например SignUpOrSignIn.xml.

Запуск политики

  1. Откройте измененную политику. Например, B2C_1A_signup_signin.

  2. В разделе Приложение выберите зарегистрированное ранее приложение. Чтобы маркер отображался, как в приведенном ниже примере, URL-адрес ответа должен быть следующим: https://jwt.ms.

  3. Выберите Запустить сейчас.

    Должен отобразиться результат, аналогичный следующему примеру:

    Decoded token in jwt.ms with idp_access_token block highlighted

Передача маркера обновления поставщика удостоверений (необязательно)

Маркер доступа, возвращающий поставщик удостоверений, действителен в течение короткого периода времени. Некоторые поставщики удостоверений также выдают маркер обновления вместе с маркером доступа. Затем клиентское приложение может обменять маркер обновления поставщика удостоверений на новый маркер доступа при необходимости.

Пользовательская политика Azure AD B2C поддерживает передачу маркера обновления поставщиков удостоверений OAuth 2.0, включая Facebook, Google и GitHub.

Чтобы передать маркер обновления поставщика удостоверений, выполните следующие действия.

  1. Откройте xml-файл TrustframeworkExtensions.xml и добавьте следующий элемент ClaimType с идентификатором identityProviderRefreshTokenэлемента ClaimsSchema.

    <ClaimType Id="identityProviderRefreshToken">
        <DisplayName>Identity provider refresh token</DisplayName>
        <DataType>string</DataType>
    </ClaimType>
    
  2. Добавьте элемент OutputClaim в элемент TechnicalProfile для каждого поставщика удостоверений OAuth 2.0, для которых требуется маркер обновления. В следующем примере показано добавление элемента в технический профиль Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Для некоторых поставщиков удостоверений требуется включить метаданные или область в технический профиль поставщика удостоверений.

    • Для поставщика удостоверений Google добавьте два типа access_type утверждений и prompt. Затем добавьте следующие входные утверждения в технический профиль поставщика удостоверений:

      <InputClaims>
          <InputClaim ClaimTypeReferenceId="access_type" PartnerClaimType="access_type" DefaultValue="offline" AlwaysUseDefaultValue="true" />
      
          <!-- The refresh_token is return only on the first authorization for a given user. Subsequent authorization request doesn't return the refresh_token.
              To fix this issue we add the prompt=consent query string parameter to the authorization request-->
          <InputClaim ClaimTypeReferenceId="prompt" PartnerClaimType="prompt" DefaultValue="consent" AlwaysUseDefaultValue="true" />
      </InputClaims>
      
    • Другие поставщики удостоверений могут иметь различные методы выдачи маркера обновления. Следуйте аудитории поставщика удостоверений и добавьте необходимые элементы в технический профиль поставщика удостоверений.

  4. Сохраните изменения, внесенные в файл TrustframeworkExtensions.xml .

  5. Откройте файл политики проверяющей стороны, например SignUpOrSignIn.xml, и добавьте элемент OutputClaim в TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="idp_refresh_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  6. Сохраните изменения, внесенные в файл политики проверяющей стороны.

  7. Отправьте файл TrustframeworkExtensions.xml, а затем файл политики проверяющей стороны.

  8. Проверка политики

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

Дополнительные сведения см. в обзоре маркеров Azure AD B2C.