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


Настройка регистрации и входа через стандартный OpenID Connect в Azure Active Directory B2C

Это важно

Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".

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

OpenID Connect — это протокол проверки подлинности, созданный на основе OAuth 2.0, который можно использовать для безопасного входа пользователя. Большинство поставщиков удостоверений, использующих этот протокол, поддерживаются в Azure AD B2C.

В этой статье объясняется, как добавить пользовательских поставщиков удостоверений OpenID Connect в потоки пользователей.

Это важно

Конечные точки должны соответствовать требованиям безопасности Azure AD B2C. Устаревшие версии TLS и шифры устарели. Для получения дополнительной информации см. требования к TLS и наборам шифров для Azure AD B2C.

Предпосылки

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

  1. Войдите на портал Azure с учетной записью, которая имеет по крайней мере права администратора внешнего поставщика удостоверений .
  2. Если у вас есть доступ к нескольким клиентам, щелкните значок Настройки в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню Каталоги и подписки.
  3. Выберите все службы в левом верхнем углу портала Azure, найдите и выберите Azure AD B2C.
  4. Выберите поставщики удостоверений и выберите новый поставщик OpenID Connect.
  5. Введите Имя. Например, введите Contoso.

Определите поставщика удостоверений OpenId Connect, добавив его в элемент ClaimsProviders в файле расширения политики.

  1. Откройте TrustFrameworkExtensions.xml.

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

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

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Login with Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://your-identity-provider.com/.well-known/openid-configuration</Item>
            <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <!-- <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
          </CryptographicKeys> -->
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

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

Каждый поставщик удостоверений OpenID Connect описывает документ метаданных, содержащий большую часть сведений, необходимых для входа. В документе метаданных содержатся такие сведения, как URL-адреса, используемые и расположение открытых ключей подписывания службы. Документ метаданных OpenID Connect всегда находится в конечной точке, которая заканчивается .well-known/openid-configurationна . Чтобы добавить поставщика удостоверений, которого вы хотите добавить в OpenID Connect, введите его URL-адрес метаданных.

В поле url метаданных введите URL-адрес документа метаданных OpenID Connect.

В метаданных <Item Key="METADATA"> технического профиля введите URL-адрес документа метаданных OpenID Connect.

Идентификатор клиента и секрет

Чтобы пользователи могли войти в систему, поставщик удостоверений требует от разработчиков регистрации приложения в своей службе. Это приложение имеет идентификатор, который называется идентификатором клиента и секретом клиента.

Секрет клиента необязателен. Однако необходимо указать секрет клиента, если тип ответа — это code, который использует секрет для обмена кода на токен.

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

В метаданных технического <Item Key="client_id"> профиля введите идентификатор клиента.

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

Если требуется секрет клиента, сохраните секрет клиента, записанный ранее в клиенте 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. Введите имя для ключа политики. Например: ContosoSecret. Префикс B2C_1A_ добавляется автоматически в имя ключа.

  9. В поле Secret введите ваш секрет клиента, который вы записали ранее.

  10. Для использования ключа выберите Signature.

  11. Нажмите кнопку Создать.

  12. CryptographicKeys В XML-элементе добавьте следующий элемент:

    <CryptographicKeys>
      <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
    </CryptographicKeys>
    

Область действия

Область определяет сведения и разрешения, которые вы хотите собрать у поставщика удостоверений, например openid profile. Чтобы получить токен идентификатора от поставщика удостоверений, необходимо задать область openid.

Без токена ID пользователи не смогут войти в Azure AD B2C через пользовательского поставщика удостоверений. Другие области могут быть добавлены, разделенные пробелами. Ознакомьтесь с документацией поставщика пользовательских удостоверений, чтобы узнать, какие другие области могут быть доступны.

В области введите области из поставщика удостоверений. Например: openid profile.

<Item Key="scope"> В метаданных технического профиля введите области от поставщика удостоверений. Например: openid profile.

Тип ответа

Тип ответа описывает, какая информация отправляется обратно в первоначальном вызове authorization_endpoint пользовательского поставщика удостоверений. Можно использовать следующие типы ответов:

  • code: согласно потоку кода авторизации код будет возвращен обратно в Azure AD B2C. Azure AD B2C продолжает вызывать token_endpoint, чтобы обменять код на токен.
  • id_token: токен идентификатора возвращается обратно в Azure AD B2C из пользовательского поставщика удостоверений.

В типе ответа выберите codeили id_tokenв соответствии с параметрами поставщика удостоверений.

В метаданных технического профиля <Item Key="response_types"> выберите code или id_token в соответствии с параметрами вашего поставщика удостоверений.

Режим отклика

Режим ответа определяет метод, который следует использовать для отправки данных обратно из пользовательского поставщика удостоверений в Azure AD B2C. Можно использовать следующие режимы отклика:

  • form_post: этот режим ответа рекомендуется для оптимальной безопасности. Ответ передается по методу HTTP POST с кодом или токеном, закодированными в теле с использованием формата application/x-www-form-urlencoded.
  • query: код или маркер возвращаются в качестве параметра запроса.

В режиме ответа выберите form_postили queryв соответствии с параметрами поставщика удостоверений.

В метаданных технического профиля <Item Key="response_mode"> выберите form_post, или query, в соответствии с настройками вашего поставщика удостоверений.

Указание домена

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

Чтобы разрешить такое поведение, введите значение для указания домена. Чтобы перейти к пользовательскому поставщику удостоверений, добавьте параметр domain_hint=<domain hint value> в конец запроса при вызове Azure AD B2C для входа.

В подсказке домена введите доменное имя, используемое в указании домена.

В xml-элементе технического профиля введите доменное <Domain>contoso.com</Domain> имя, используемое в указании домена. Например: contoso.com.

Сопоставление утверждений

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

  • Идентификатор пользователя: введите утверждение, которое предоставляет уникальный идентификатор для вошедшего пользователя.
  • Отображаемое имя: введите утверждение, которое предоставляет отображаемое имя или полное имя пользователя.
  • Заданное имя: введите утверждение, которое предоставляет имя пользователя.
  • Фамилия: введите утверждение, которое предоставляет фамилию пользователя.
  • Электронная почта: введите утверждение, которое предоставляет адрес электронной почты пользователя.

Элемент OutputClaims содержит список утверждений, возвращаемых поставщиком аутентификации. Сопоставьте имя утверждения, определенного в вашей политике, с именем, определенным удостоверяющим центром. Настройте атрибут <OutputClaims> в элементе PartnerClaimType с соответствующим именем утверждения, как определено вашим поставщиком удостоверений.

ИдентификаторСсылкиТипаТребования ТипЗапросаПартнера
issuerUserId Введите утверждение, которое предоставляет уникальный идентификатор для пользователя, вошедшего в систему.
displayName Введите утверждение, которое предоставляет отображаемое имя или полное имя пользователя.
givenName Введите утверждение, которое предоставляет первое имя пользователя.
surName Введите утверждение, которое предоставляет фамилию пользователя.
email Введите утверждение, которое предоставляет адрес электронной почты пользователя.
identityProvider Введите утверждение, которое содержит имя эмитента токенов. Например: iss. Если поставщик удостоверения личности не включает утверждение издателя в токен, задайте атрибут DefaultValue с уникальным идентификатором вашего поставщика удостоверения личности. Например: DefaultValue="contoso.com".

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

  1. В клиенте Azure AD B2C выберите потоки пользователей.
  2. Щелкните поток пользователя, в который вы хотите добавить поставщика удостоверений.
  3. В разделе социальные провайдеры идентификации выберите добавленного поставщика. Например, Contoso.
  4. Нажмите кнопку "Сохранить".

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

  1. Чтобы протестировать вашу политику, выберите Запустить поток пользователя.
  2. Для приложения выберите веб-приложение с именем testapp1 , которое вы ранее зарегистрировали. В поле URL-адрес ответа должно содержаться значение https://jwt.ms.
  3. Нажмите на кнопку Запустить пользовательский поток.
  4. На странице регистрации или входа выберите поставщика удостоверений, через которого вы хотите войти в систему. Например, Contoso.

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

Добавить пользовательский сценарий

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

  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, чтобы он соответствовал идентификатору пути пользователя, где вы добавили провайдера идентификации.

В следующем примере для CustomSignUpSignIn пути пользователя для параметра ReferenceId задано значение 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 , чтобы войти с помощью учетной записи Google.

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

Известные проблемы

  • Azure AD B2C не поддерживает JWE (веб-шифрование JSON) для обмена зашифрованными токенами с поставщиками удостоверений OpenID connect.

Дальнейшие шаги

Дополнительные сведения см. в руководстве по техническому профилю OpenId Connect .