Добавление AD FS в качестве поставщика удостоверений OpenID Connect с помощью пользовательских политик в Azure Active Directory B2C
Для начала с помощью селектора Choose a policy type (Выбрать тип политики) выберите тип пользовательской политики. Azure Active Directory B2C предлагает два метода определения способа взаимодействия пользователей с вашими приложениями: с помощью предопределенных потоков пользователей или полностью настраиваемых пользовательских политик. Действия, которые необходимо выполнить, отличаются для каждого метода.
Необходимые компоненты
- Создайте поток пользователя, чтобы пользователи могли зарегистрироваться и входить в ваше приложение.
- Зарегистрируйте веб-приложение.
- Выполните шаги, описанные в статье Начало работы с настраиваемыми политиками в Azure Active Directory B2C.
- Зарегистрируйте веб-приложение.
Создание приложения AD FS
Чтобы включить вход для пользователей с учетной записью AD FS в Azure Active Directory B2C (Azure AD B2C), создайте группу приложений в AD FS. Дополнительные сведения см. в статье Создание веб-приложения с помощью OpenID Connect с AD FS 2016 и более поздних версий.
Чтобы создать группу приложений, выполните следующие действия.
- В диспетчере сервера выберите Средства, а затем AD FS Management (Управление AD FS).
- В разделе "Управление AD FS" щелкните Группы приложений правой кнопкой мыши и выберите Добавить группу приложений.
- На экране приветствия мастера групп приложений:
- Укажите название приложения. Например, приложение Azure AD B2C.
- В разделе Клиент-серверные приложения выберите шаблон Веб-браузер обращается к веб-приложению.
- Выберите Далее.
- На экране собственного приложения мастера групп приложений :
- Скопируйте значение идентификатора клиента. Идентификатор клиента — это идентификатор приложения AD FS. Идентификатор приложения потребуется далее в этой статье.
- В поле 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
укажите имя вашего личного домена. - Нажмите Далее, нажмите Далее, а затем нажмите Далее еще раз, чтобы завершить работу с мастером регистрации приложения.
- Выберите Закрыть.
Настройка утверждений для приложения
На этом шаге необходимо настроить утверждения, которые приложение AD FS возвращает в Azure AD B2C.
Выберите созданное приложение в разделе Группы приложений.
В разделе Приложения в окне "Свойства приложения" выберите Веб-приложение. Затем выберите Edit (Изменить).
Выберите вкладку Правила преобразования выдачи, а затем щелкните Добавить правило.
В разделе Шаблон правила утверждения выберите Отправка атрибутов LDAP как утверждений, а затем нажмите кнопку Далее.
Укажите имя правила утверждения. В разделе Хранилище атрибутов выберите Active Directory и добавьте следующие утверждения.
Атрибут LDAP Тип исходящего утверждения Имя субъекта-пользователя upn Surname family_name Given-Name given_name Display-Name name Обратите внимание, что некоторые имена не отображаются в раскрывающемся списке типов исходящего утверждения. Их необходимо вводить вручную (раскрывающийся список доступен для редактирования).
Выберите Готово.
Нажмите кнопку Применить, а затем — ОК.
Нажмите кнопку ОК еще раз, чтобы завершить работу.
Настройка служб AD FS в качестве поставщика удостоверений
Войдите на портал Azure с правами глобального администратора клиента Azure AD B2C.
Если у вас есть доступ к нескольким клиентам, выберите значок Параметры в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню каталогов и подписок.
Выберите Все службы в левом верхнем углу окна портала Azure, а затем найдите и выберите Azure AD B2C.
Щелкните элемент Поставщики удостоверений, а затем выберите Новый поставщик OpenID Connect.
Введите Имя. (например, Contoso).
В поле URL-адрес метаданных введите URL-адрес документа с конфигурацией OpenID Connect для AD FS. Например:
https://adfs.contoso.com/adfs/.well-known/openid-configuration
В поле Идентификатор клиента введите ранее записанное значение идентификатора приложения.
Для параметра Область введите значение
openid
.Выберите id_token в качестве типа ответа. Поэтому значение секрета клиента не требуется. См. дополнительные сведения об использовании идентификатора клиента и секрета при добавлении универсального поставщика удостоверений OpenID Connect.
(Необязательно) В поле Указание домена Введите
contoso.com
. Дополнительные сведения см. в статье Настройка прямого входа в систему с помощью Azure Active Directory B2C.В разделе Сопоставление утверждений поставщика удостоверений выберите следующие утверждения:
- Идентификатор пользователя:
upn
- Отображаемое имя:
unique_name
- Имя:
given_name
- Фамилия:
family_name
- Идентификатор пользователя:
Выберите Сохранить.
Добавление поставщика удостоверений AD FS в поток пользователя
На этом этапе поставщик удостоверений AD FS (Contoso) уже настроен, но еще не отображается на страницах входа. Чтобы добавить поставщика удостоверений AD FS в поток пользователя:
- В клиенте Azure AD B2C выберите Потоки пользователей.
- Выберите поток пользователя, для которого требуется добавить поставщик удостоверений AD FS (Contoso).
- В разделе Поставщики удостоверений социальных сетей выберите Contoso.
- Выберите Сохранить.
- Чтобы проверить политику, выберите Выполнить поток пользователя.
- В разделе Приложение выберите зарегистрированное ранее веб-приложение с именем testapp1. В поле URL-адрес ответа должно содержаться значение
https://jwt.ms
. - Нажмите кнопку Выполнить поток пользователя.
- На странице регистрации или входа выберите Contoso для входа с помощью учетной записи Contoso.
Если вход выполнен успешно, в браузере откроется страница https://jwt.ms
с содержимым маркера, возвращенного Azure AD B2C.
Настройка служб AD FS в качестве поставщика удостоверений
Чтобы разрешить пользователям входить в систему с помощью учетной записи AD FS, нужно определить AD FS в качестве поставщика утверждений, с которым Azure AD B2C может взаимодействовать через конечную точку.
Откройте файл TrustFrameworkExtensions.xml.
Найдите элемент ClaimsProviders. Если он не существует, добавьте его в корневой элемент.
Добавьте новый элемент 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>
В поле URL-адрес метаданных введите URL-адрес документа с конфигурацией OpenID Connect для AD FS. Например:
https://adfs.contoso.com/adfs/.well-known/openid-configuration
Задайте для параметра client_id значение идентификатора приложения из регистрации приложения.
Сохраните файл.
Добавление пути взаимодействия пользователя
На этом этапе поставщик удостоверений уже настроен, но еще не отображается на страницах входа. Если у вас нет собственного пути взаимодействия пользователя, создайте дубликат существующего шаблона. В противном случае перейдите к следующему шагу.
- Откройте файл TrustFrameworkBase.xml из начального пакета.
- Найдите и скопируйте все содержимое элемента UserJourney, в котором присутствует запись
Id="SignUpOrSignIn"
. - Откройте файл TrustFrameworkExtensions.xml и найдите элемент UserJourneys. Если элемент не существует, добавьте его.
- Вставьте все скопированное содержимое элемента UserJourney в качестве дочернего элемента в элемент UserJourneys.
- Переименуйте идентификатор этого пути взаимодействия пользователя. Например,
Id="CustomSignUpSignIn"
.
Добавление поставщика удостоверений в путь взаимодействия пользователя
Теперь, когда у вас есть путь взаимодействия пользователя, добавьте в него новый поставщик удостоверений. Сначала добавьте кнопку входа, а затем свяжите кнопку с действием. Это действие является техническим профилем, который вы создали ранее.
В пути взаимодействия пользователя найдите элемент шага оркестрации, включающий
Type="CombinedSignInAndSignUp"
илиType="ClaimsProviderSelection"
. Обычно это первый шаг оркестрации. Элемент ClaimsProviderSelections содержит список поставщиков удостоверений, которые пользователь может использовать для входа. Порядок элементов управляет порядком кнопок входа, представленных пользователем. Добавьте XML-элемент ClaimsProviderSelection. Присвойте значению TargetClaimsExchangeId понятное имя.На следующем шаге оркестрации добавьте элемент 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>
Передача настраиваемой политики
- Войдите на портал Azure.
- Выберите значок Каталог и подписка в верхней панели инструментов портала, а затем выберите каталог, содержащий клиент Azure AD B2C.
- В портале Azure найдите и выберите Azure AD B2C.
- В разделе Политики выберите Identity Experience Framework.
- Выберите Отправить пользовательскую политику, а затем отправьте два измененных файла политики в следующем порядке: политика расширения, например
TrustFrameworkExtensions.xml
, а затем политика проверяющей стороны, напримерSignUpSignIn.xml
.
Тестирование настраиваемой политики
- Выберите политику проверяющей стороны, например
B2C_1A_signup_signin
. - В разделе Приложение выберите зарегистрированное ранее веб-приложение. В поле URL-адрес ответа должно содержаться значение
https://jwt.ms
. - Нажмите кнопку Выполнить.
- На странице регистрации или входа выберите Contoso для входа с помощью учетной записи Contoso.
Если вход выполнен успешно, в браузере откроется страница https://jwt.ms
с содержимым маркера, возвращенного Azure AD B2C.
Следующие шаги
Сведения о том, как передать токен AD-FS в приложение.