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

Протокол

Атрибуту 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>

Метаданные

attribute Обязательно Описание
client_id Да Идентификатор приложения поставщика удостоверений.
IdTokenAudience Нет Аудитория id_token. Если этот параметр задан, Azure AD B2C проверяет, содержится ли утверждение aud в маркере, которые возвращает поставщик удостоверений, и соответствует ли утверждению, указанному в метаданных IdTokenAudience.
METADATA Да URL-адрес, указывающий на документ конфигурации поставщика удостоверений OpenID Connect, который также известен как конечная точка конфигурации OpenID. URL-адрес может содержать выражение {tenant}, которое заменяется именем клиента.
authorization_endpoint Нет URL-адрес, указывающий на конечную точку авторизации конфигурации поставщика удостоверений OpenID Connect. Значение метаданных authorization_endpoint имеет приоритет над значением authorization_endpoint, указанным в известной конечной точке конфигурации OpenID. URL-адрес может содержать выражение {tenant}, которое заменяется именем клиента.
end_session_endpoint Нет URL-адрес конечной точки завершения сеанса. Значение метаданных end_session_endpoint имеет приоритет над значением end_session_endpoint, указанным в известной конечной точке конфигурации OpenID.
issuer Нет Уникальный идентификатор поставщика удостоверений OpenID Connect. Значение метаданных issuer имеет приоритет над значением issuer, указанным в известной конечной точке конфигурации OpenID. Если этот параметр задан, Azure AD B2C проверяет, содержится ли утверждение iss в маркере, который возвращает поставщик удостоверений, и соответствует ли оно утверждению, указанному в метаданных issuer.
ProviderName Нет Имя поставщика удостоверений.
response_types Нет Тип ответа в соответствии со спецификацией OpenID Connect Core 1.0. Возможные значения: id_token, code или token.
response_mode Нет Метод, который использует поставщик удостоверений, чтобы отправить результат обратно в Azure AD B2C. Возможные значения: query, form_post (по умолчанию) или fragment.
область Нет Область запроса, определенная в соответствии со спецификацией OpenID Connect Core 1.0. Возможные значения: openid, profile и email.
HttpBinding Нет Ожидаемая привязка HTTP для маркера доступа и конечных точек маркера утверждений. Возможные значения: GET или POST.
ValidTokenIssuerPrefixes Нет Ключ, который можно использовать для входа в каждый из клиентов при использовании поставщика удостоверений с несколькими клиентами, например идентификатор Microsoft Entra.
UsePolicyInRedirectUri Нет Указывает, следует ли использовать политику при создании универсального кода ресурса (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 Нет Указывает, должен ли запрос внешней службы помечаться как запрос, завершившийся сбоем, если код состояния Http находится в диапазоне 5xx. Значение по умолчанию — false.
DiscoverMetadataByTokenIssuer Нет Указывает, следует ли обнаруживать метаданные OIDC с помощью издателя в токене JWT. Если вам нужно создать URL-адрес конечной точки метаданных на основе издателя, установите для этого параметра значение true.
IncludeClaimResolvingInClaimsHandling Нет Для входящих и исходящих утверждений указывает, включено ли разрешение утверждений в технический профиль. Возможные значения: true или false (по умолчанию). Если вы хотите использовать сопоставитель утверждений в техническом профиле, задайте для этого параметра значение true.
token_endpoint_auth_method Нет Указывает, как Azure AD B2C отправляет заголовок проверки подлинности в конечную точку маркера. Возможные значения: client_secret_post (по умолчанию) и client_secret_basic, private_key_jwt. Дополнительные сведения см. в документе о проверке подлинности клиента OpenID Connect.
token_signing_algorithm Нет Указывает алгоритм подписания для использования, когда для параметра token_endpoint_auth_method задано значение private_key_jwt. Возможные значения: RS256 (по умолчанию) или RS512.
SingleLogoutEnabled Нет Указывает, будет ли технический профиль при входе пытаться выйти из федеративных поставщиков удостоверений. Дополнительные сведения см. в разделе Выход из сеанса Azure AD B2C. Возможные значения: true (по умолчанию) и false.
ReadBodyClaimsOnIdpRedirect Нет Задайте значение 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. Сообщения об ошибках можно локализовать.

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

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

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

attribute Обязательно Описание
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 перенаправления должен содержать только строчные символы.

Примеры: