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


Определение технического профиля OpenId Connect в настраиваемой политике Azure Active Directory B2C

Примечание.

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

Azure Active Directory B2C (Azure AD B2C) поддерживает протокол OpenId Connect для поставщиков удостоверений. OpenID Connect 1.0 определяет уровень идентификации поверх OAuth 2.0 и представляет собой оптимизированный протокол среди современных протоколов аутентификации. С помощью технического профиля OpenID Connect можно объединиться с поставщиком удостоверений на основе OpenID Connect, например идентификатором Microsoft Entra. Федерация с поставщиком удостоверений позволяет пользователям входить в систему, используя имеющиеся удостоверения социальных сетей или компаний.

Протокол

Атрибуту Name элемента Protocol необходимо присвоить значение OpenIdConnect. Например, OpenIdConnect — это протокол для технического профиля MSA-OIDC.

<TechnicalProfile Id="MSA-OIDC">
  <DisplayName>Microsoft Account</DisplayName>
  <Protocol Name="OpenIdConnect" />
  ...

Входящие утверждения

Элементы InputClaims и InputClaimsTransformations не являются обязательными. Но при необходимости можно отправлять дополнительные параметры поставщику удостоверений. В следующем примере к запросу авторизации добавляется параметр строки запроса domain_hint со значением contoso.com.

<InputClaims>
  <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>

Исходящие утверждения

Элемент OutputClaims содержит список утверждений, возвращаемых поставщиком удостоверений OpenID Connect. Возможно, потребуется сопоставить имя утверждения, определенное в вашей политике, с именем, определенным у поставщика удостоверений. Вы также можете добавить утверждения, которые не возвращаются поставщиком удостоверений, установив атрибут DefaultValue.

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

В этом примере показаны утверждения, возвращаемые поставщиком удостоверений Microsoft Account:

  • Утверждение sub, которое сопоставляется с утверждением issuerUserId.
  • утверждение name, которое сопоставляется с утверждением displayName;
  • утверждение email без сопоставления с именем.

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

  • Утверждение IdentityProvider, содержащее имя поставщика удостоверений.
  • утверждение AuthenticationSource со значением по умолчанию socialIdpAuthentication.
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="live.com" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
  <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
  <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
  <OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>

Метаданные

Атрибут Обязательное поле Описание
client_id Да Идентификатор приложения поставщика удостоверений.
IdTokenAudience No Аудитория id_token. Если этот параметр задан, Azure AD B2C проверяет, содержится ли утверждение aud в маркере, которые возвращает поставщик удостоверений, и соответствует ли утверждению, указанному в метаданных IdTokenAudience.
МЕТАДАННЫЕ Да URL-адрес, указывающий на документ конфигурации поставщика удостоверений OpenID Connect, который также известен как конечная точка конфигурации OpenID. URL-адрес может содержать выражение {tenant}, которое заменяется именем клиента.
authorization_endpoint No URL-адрес, указывающий на конечную точку авторизации конфигурации поставщика удостоверений OpenID Connect. Значение метаданных authorization_endpoint имеет приоритет над значением authorization_endpoint, указанным в известной конечной точке конфигурации OpenID. URL-адрес может содержать выражение {tenant}, которое заменяется именем клиента.
end_session_endpoint No URL-адрес конечной точки завершения сеанса. Значение метаданных end_session_endpoint имеет приоритет над значением end_session_endpoint, указанным в известной конечной точке конфигурации OpenID.
Издатель No Уникальный идентификатор поставщика удостоверений OpenID Connect. Значение метаданных issuer имеет приоритет над значением issuer, указанным в известной конечной точке конфигурации OpenID. Если этот параметр задан, Azure AD B2C проверяет, содержится ли утверждение iss в маркере, который возвращает поставщик удостоверений, и соответствует ли оно утверждению, указанному в метаданных issuer.
ProviderName No Имя поставщика удостоверений.
response_types No Тип ответа в соответствии со спецификацией OpenID Connect Core 1.0. Возможные значения: id_token, code или token.
response_mode No Метод, который использует поставщик удостоверений, чтобы отправить результат обратно в Azure AD B2C. Возможные значения: query, form_post (по умолчанию) или fragment.
область No Область запроса, определенная в соответствии со спецификацией OpenID Connect Core 1.0. Возможные значения: openid, profile и email.
HttpBinding No Ожидаемая привязка HTTP для маркера доступа и конечных точек маркера утверждений. Возможные значения: GET или POST.
ValidTokenIssuerPrefixes No Ключ, который можно использовать для входа в каждый из клиентов при использовании поставщика удостоверений с несколькими клиентами, например идентификатора Microsoft Entra.
UsePolicyInRedirectUri No Указывает, следует ли использовать политику при создании универсального кода ресурса (URI) перенаправления. При настройке приложения в поставщике удостоверений необходимо указать URI перенаправления. URI перенаправления указывает на Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Если вы указываете true, необходимо добавить URI перенаправления для каждой используемой политики. Например: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xx No Указывает, должен ли запрос внешней службы помечаться как запрос, завершившийся сбоем, если код состояния Http находится в диапазоне 5xx. Значение по умолчанию — false.
DiscoverMetadataByTokenIssuer No Указывает, следует ли обнаруживать метаданные OIDC с помощью издателя в токене JWT. Если вам нужно создать URL-адрес конечной точки метаданных на основе издателя, установите для этого параметра значение true.
IncludeClaimResolvingInClaimsHandling No Для входящих и исходящих утверждений указывает, включено ли разрешение утверждений в технический профиль. Возможные значения: true или false (по умолчанию). Если вы хотите использовать сопоставитель утверждений в техническом профиле, задайте для этого параметра значение true.
token_endpoint_auth_method No Указывает, как Azure AD B2C отправляет заголовок проверки подлинности в конечную точку маркера. Возможные значения: client_secret_post (по умолчанию) и client_secret_basic, private_key_jwt. Дополнительные сведения см. в документе о проверке подлинности клиента OpenID Connect.
token_signing_algorithm No Указывает алгоритм подписания для использования, когда для параметра token_endpoint_auth_method задано значение private_key_jwt. Возможные значения: RS256 (по умолчанию) или RS512.
SingleLogoutEnabled No Указывает, будет ли технический профиль при входе пытаться выйти из федеративных поставщиков удостоверений. Дополнительные сведения см. в разделе Выход из сеанса Azure AD B2C. Возможные значения: true (по умолчанию) и false.
ReadBodyClaimsOnIdpRedirect No Задайте значение true, чтобы читать утверждения из текста ответа при перенаправлении поставщика удостоверений. Эти метаданные используются с идентификатором Apple ID, если утверждения возвращаются в полезных данных ответа.
<Metadata>
  <Item Key="ProviderName">https://login.live.com</Item>
  <Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
  <Item Key="response_types">code</Item>
  <Item Key="response_mode">form_post</Item>
  <Item Key="scope">openid profile email</Item>
  <Item Key="HttpBinding">POST</Item>
  <Item Key="UsePolicyInRedirectUri">false</Item>
  <Item Key="client_id">Your Microsoft application client ID</Item>
</Metadata>

Элементы пользовательского интерфейса

Параметры ниже можно использовать для настройки сообщения об ошибке, отображаемого при сбое. Метаданные должны быть настроены в техническом профиле OpenID Connect. Сообщения об ошибках можно локализовать.

Атрибут Обязательное поле Описание
UserMessageIfClaimsPrincipalDoesNotExist No Сообщение, отображаемое пользователю, если учетная запись с указанным именем пользователя не найдена в каталоге.
UserMessageIfInvalidPassword No Сообщение, отображаемое пользователю, если пароль неправильный.
UserMessageIfOldPasswordUsed No Сообщение, отображаемое пользователю, если использован старый пароль.

Криптографические ключи

Элемент CryptographicKeys содержит следующий атрибут:

Атрибут Обязательное поле Описание
client_secret Да Секрет клиента приложения поставщика удостоверений. Этот криптографический ключ необходим, только если для метаданных response_types задано значение code, а для token_endpoint_auth_method — client_secret_post или client_secret_basic. В этом случае Azure AD B2C выполняет другой вызов для обмена кода авторизации на маркер доступа. Если для метаданных задано значение id_token, криптографический ключ можно не указывать.
assertion_signing_key Да Закрытый ключ RSA, который будет использоваться для подписи утверждения клиента. Этот криптографический ключ необходим, только если для метаданных token_endpoint_auth_method задано значение private_key_jwt.

URI-адрес перенаправления

При настройке URI перенаправления поставщика удостоверений введите https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Обязательно замените {your-tenant-name} именем своего клиента. URI перенаправления должен содержать только строчные символы.

Примеры: