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


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

Это важно

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

Замечание

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

Azure Active Directory B2C (Azure AD B2C) обеспечивает поддержку управления пользователями Microsoft Entra. В этой статье описываются особенности технического профиля взаимодействия с поставщиком утверждений, поддерживающим этот стандартизированный протокол.

Протокол

Атрибуту Name элемента Protocol необходимо присвоить значение Proprietary. Атрибут обработчика должен содержать полное имя сборки Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullобработчика протокола.

В соответствии с начальным пакетом настраиваемой политики технические профили Microsoft Entra включают технический профиль AAD-Common . В технических профилях Microsoft Entra протокол не указан, так как протокол настраивается в техническом профиле AAD-Common :

  • AAD-UserReadUsingAlternativeSecurityId и AAD-UserReadUsingAlternativeSecurityId-NoError — найдите учетную запись социальной сети в каталоге.
  • AAD-UserWriteUsingAlternativeSecurityId — создание новой учетной записи в социальной сети.
  • AAD-UserReadUsingEmailAddress — поиск локальной учетной записи в каталоге.
  • AAD-UserWriteUsingLogonEmail — создание новой локальной учетной записи.
  • AAD-UserWritePasswordUsingObjectId — обновление пароля локальной учетной записи.
  • AAD-UserWriteProfileUsingObjectId — обновление профиля пользователя локальной учетной записи или учетной записи социальной сети.
  • AAD-UserReadUsingObjectId — чтение профиля пользователя локальной учетной записи или учетной записи социальной сети.
  • AAD-UserWritePhoneNumberUsingObjectId - Запишите номер телефона MFA локальной или социальной учетной записи

В следующем примере показан технический профиль AAD-Common :

<TechnicalProfile Id="AAD-Common">
  <DisplayName>Azure Active Directory</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

  <CryptographicKeys>
    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
  </CryptographicKeys>

  <!-- We need this here to suppress the SelfAsserted provider from invoking SSO on validation profiles. -->
  <IncludeInSso>false</IncludeInSso>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

InputClaims

Элемент InputClaims содержит утверждение, которое используется для поиска учетной записи в каталоге или создания новой. В коллекции входных утверждений должен быть ровно один элемент InputClaim для всех технических профилей Microsoft Entra. Возможно, потребуется сопоставить имя утверждения, определенного в политике, с именем, определенным в идентификаторе Microsoft Entra.

Чтобы прочитать, обновить или удалить существующую учетную запись пользователя, утверждение ввода — это ключ, который однозначно идентифицирует учетную запись в каталоге Microsoft Entra. Например, objectId, userPrincipalName, signInNames.emailAddress, signInNames.userName или alternativeSecurityId.

Чтобы создать новую учетную запись пользователя, утверждение ввода — это ключ, который однозначно идентифицирует локальную или федеративную учетную запись. Например, локальная учетная запись: signInNames.emailAddress или signInNames.userName. Для федеративной учетной записи: alternativeSecurityId.

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

OutputClaims

Элемент OutputClaims содержит список утверждений, возвращенных техническим профилем Microsoft Entra. Возможно, потребуется сопоставить имя утверждения, определенного в политике, с именем, определенным в идентификаторе Microsoft Entra. Вы также можете включить утверждения, которые не возвращаются идентификатором Microsoft Entra, если вы установили атрибут.DefaultValue

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

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

  • objectId, который является идентификатором нового аккаунта
  • newUser, который указывает, является ли пользователь новым
  • authenticationSource, который устанавливает аутентификацию в значение localAccountAuthentication
  • userPrincipalName, который является именем участника-пользователя новой учетной записи
  • signInNames.emailAddress, которое является именем для входа в учетную запись, аналогично утверждению ввода электронной почты
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="objectId" />
  <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
  <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
  <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
</OutputClaims>

СохраняемыеClaims

Элемент PersistedClaims содержит все значения, которые должны быть сохранены по идентификатору Microsoft Entra с возможными сведениями о сопоставлении между типом утверждения, уже определенным в разделе ClaimsSchema в политике, и именем атрибута Microsoft Entra.

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

  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
    <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />

    <!-- Optional claims. -->
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>

Имя утверждения — это имя атрибута Microsoft Entra, если не указан атрибут PartnerClaimType , который содержит имя атрибута Microsoft Entra.

Требования к операции

  • В контейнере утверждений должен быть ровно один элемент InputClaim для всех технических профилей Microsoft Entra.
  • В статье Атрибуты профиля пользователя описываются поддерживаемые атрибуты профиля пользователя Azure AD B2C, которые можно использовать во входных утверждениях, выходных утверждениях и материализованных утверждениях.
  • Если операция имеет значение или WriteDeleteClaims, то она также должна отображаться в элементе PersistedClaims .
  • Значение утверждения userPrincipalName должно быть в формате user@tenant.onmicrosoft.com.
  • Утверждение displayName является обязательным и не может быть пустой строкой.

Операции с техническим профилем Microsoft Entra

Читайте

Операция чтения считывает данные об учетной записи одного пользователя. Следующий технический профиль считывает данные об учетной записи пользователя с использованием objectId пользователя:

<TechnicalProfile Id="AAD-UserReadUsingObjectId">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims>

    <!-- Required claims -->
    <OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />

    <!-- Optional claims -->
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="givenName" />
    <OutputClaim ClaimTypeReferenceId="surname" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Напишите

Операция записи создает или обновляет учетную запись одного пользователя. Следующий технический профиль создает новую учетную запись в социальной сети:

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Write</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalAlreadyExists">You are already registered, please press the back button and sign in instead.</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
    <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />

    <!-- Optional claims -->
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

DeleteClaims

Операция DeleteClaims удаляет сведения из предоставленного списка утверждений. Следующий технический профиль удаляет утверждения:

<TechnicalProfile Id="AAD-DeleteClaimsUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaims</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="strongAuthenticationPhoneNumber" />
  </PersistedClaims>
  <OutputClaims />
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

DeleteClaimsPrincipal (УдалитьClaimsPrincipal)

Операция DeleteClaimsPrincipal удаляет одну учетную запись пользователя из каталога. Следующий технический профиль удаляет учетную запись пользователя из каталога с использованием имени участника-пользователя:

<TechnicalProfile Id="AAD-DeleteUserUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Следующий технический профиль удаляет учетную запись пользователя социальной сети с помощью alternativeSecurityId:

<TechnicalProfile Id="AAD-DeleteUserUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Метаданные

Свойство Обязательно Описание
Операция Да Операция, выполняемая. Возможные значения: Read, Write, DeleteClaims или DeleteClaimsPrincipal.
RaiseErrorIfClaimsPrincipalDoesNotExist нет Выдает ошибку, если объект user не существует в каталоге. Возможные значения: true или false.
RaiseErrorIfClaimsPrincipalAlreadyExists нет Выдает ошибку, если объект пользователя уже существует. Возможные значения: true или false. Эти метаданные применимы только для операции Write.
ApplicationObjectId (Идентификатор объекта) нет Идентификатор объекта приложения для атрибутов расширения. Value: ObjectId приложения. Дополнительные сведения см. в разделе Использование настраиваемых атрибутов.
ClientId нет Идентификатор клиента для доступа к арендатору в качестве третьей стороны. Дополнительные сведения см. в статье Использование настраиваемых атрибутов в политике редактирования настраиваемого профиля
IncludeClaimResolvingInClaimsHandling нет Для входящих и исходящих утверждений указывает, включено ли разрешение утверждений в технический профиль. Возможные значения: true или false (по умолчанию). Если вы хотите использовать сопоставитель утверждений в техническом профиле, задайте для этого параметра значение true.

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

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

Свойство Обязательно Описание
UserMessageIfClaimsPrincipalAlreadyExists нет Если необходимо вызвать ошибку (см. описание атрибута RaiseErrorIfClaimsPrincipalAlreadyExists), укажите сообщение, которое будет отображаться для пользователя, если объект пользователя уже существует.
UserMessageIfClaimsPrincipalDoesNotExist нет Если необходимо вызвать ошибку (см. описание атрибута RaiseErrorIfClaimsPrincipalDoesNotExist), укажите сообщение, которое будет показано пользователю, если объект пользователя не существует.

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

В следующей статье приведены примеры использования технического профиля Microsoft Entra: