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


Добавление AD FS в качестве поставщика удостоверений OpenID Connect с помощью пользовательских политик в Azure Active Directory B2C

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

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

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

Чтобы включить вход для пользователей с учетной записью AD FS в Azure Active Directory B2C (Azure AD B2C), создайте группу приложений в AD FS. Дополнительные сведения см. в статье Создание веб-приложения с помощью OpenID Connect с AD FS 2016 и более поздних версий.

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

  1. В диспетчере сервера выберите Средства, а затем AD FS Management (Управление AD FS).
  2. В разделе "Управление AD FS" щелкните Группы приложений правой кнопкой мыши и выберите Добавить группу приложений.
  3. На экране приветствия мастера групп приложений:
    1. Укажите название приложения. Например, приложение Azure AD B2C.
    2. В разделе Клиент-серверные приложения выберите шаблон Веб-браузер обращается к веб-приложению.
    3. Выберите Далее.
  4. На экране собственного приложения мастера групп приложений :
    1. Скопируйте значение идентификатора клиента. Идентификатор клиента — это идентификатор приложения AD FS. Идентификатор приложения потребуется далее в этой статье.
    2. В поле 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-tenant-name именем своего арендатора, а вместо your-domain-name укажите имя вашего личного домена.
    3. Нажмите Далее, нажмите Далее, а затем нажмите Далее еще раз, чтобы завершить работу с мастером регистрации приложения.
    4. Выберите Закрыть.

Настройка утверждений для приложения

На этом шаге необходимо настроить утверждения, которые приложение AD FS возвращает в Azure AD B2C.

  1. Выберите созданное приложение в разделе Группы приложений.

  2. В разделе Приложения в окне "Свойства приложения" выберите Веб-приложение. Затем выберите Edit (Изменить). Screenshot that shows how to edit a web application.

  3. Выберите вкладку Правила преобразования выдачи, а затем щелкните Добавить правило.

  4. В разделе Шаблон правила утверждения выберите Отправка атрибутов LDAP как утверждений, а затем нажмите кнопку Далее.

  5. Укажите имя правила утверждения. В разделе Хранилище атрибутов выберите Active Directory и добавьте следующие утверждения.

    Атрибут LDAP Тип исходящего утверждения
    Имя субъекта-пользователя upn
    Surname family_name
    Given-Name given_name
    Display-Name name

    Обратите внимание, что некоторые имена не отображаются в раскрывающемся списке типов исходящего утверждения. Их необходимо вводить вручную (раскрывающийся список доступен для редактирования).

  6. Выберите Готово.

  7. Нажмите кнопку Применить, а затем — ОК.

  8. Нажмите кнопку ОК еще раз, чтобы завершить работу.

Настройка служб AD FS в качестве поставщика удостоверений

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

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

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

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

  5. Введите Имя. (например, Contoso).

  6. В поле URL-адрес метаданных введите URL-адрес документа с конфигурацией OpenID Connect для AD FS. Например:

    https://adfs.contoso.com/adfs/.well-known/openid-configuration 
    
  7. В поле Идентификатор клиента введите ранее записанное значение идентификатора приложения.

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

  9. Выберите id_token в качестве типа ответа. Поэтому значение секрета клиента не требуется. См. дополнительные сведения об использовании идентификатора клиента и секрета при добавлении универсального поставщика удостоверений OpenID Connect.

  10. (Необязательно) В поле Указание домена Введите contoso.com. Дополнительные сведения см. в статье Настройка прямого входа в систему с помощью Azure Active Directory B2C.

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

    • Идентификатор пользователя: upn
    • Отображаемое имя: unique_name
    • Имя: given_name
    • Фамилия: family_name
  12. Выберите Сохранить.

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

На этом этапе поставщик удостоверений AD FS (Contoso) уже настроен, но еще не отображается на страницах входа. Чтобы добавить поставщика удостоверений AD FS в поток пользователя:

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

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

Настройка служб AD FS в качестве поставщика удостоверений

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

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

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

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

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="METADATA">https://your-adfs-domain/adfs/.well-known/openid-configuration</Item>
            <Item Key="response_types">id_token</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="scope">openid</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">0</Item>
            <!-- Update the Client ID below to the Application ID -->
            <Item Key="client_id">Your AD FS application ID</Item>
          </Metadata>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="upn" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="unique_name" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss"  />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. В поле URL-адрес метаданных введите URL-адрес документа с конфигурацией OpenID Connect для AD FS. Например:

    https://adfs.contoso.com/adfs/.well-known/openid-configuration 
    
  5. Задайте для параметра client_id значение идентификатора приложения из регистрации приложения.

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

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

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

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

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

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

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

Сведения о том, как передать токен AD-FS в приложение.