Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Начиная с 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, которые можно использовать во входных утверждениях, выходных утверждениях и материализованных утверждениях.
- Если операция имеет значение или
Write
DeleteClaims
, то она также должна отображаться в элементе 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: