Определение самоподтвержденного технического профиля в настраиваемой политике Azure Active Directory B2C
Примечание.
В Azure Active Directory B2C пользовательские политики преимущественно предназначены для выполнения сложных сценариев. В большинстве случаев рекомендуется использовать встроенные потоки пользователей. Ознакомьтесь со статьей Начало работы с настраиваемыми политиками в Azure Active Directory B2C, чтобы узнать о базовом пакете настраиваемых политик, если еще не сделали этого.
Все взаимодействия в Azure Active Directory (Azure AD) B2C, в которых пользователь должен предоставить входные данные, выполняются с использованием самоподтвержденных технических профилей. Например, страница регистрации, страница входа, страница сброса пароля.
Протокол
Атрибуту Name элемента Protocol необходимо присвоить значение Proprietary
. Атрибут handler должен содержать полное имя сборки обработчика протокола, которое используется Azure AD B2C, для самоподтверждения: Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
.
В следующем примере показан самоподтвержденный технический профиль для регистрации по электронной почте:
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
<DisplayName>Email signup</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
Входящие утверждения
В самоподтвержденном техническом профиле можно использовать элементы InputClaims и InputClaimsTransformations для предварительного заполнения значений утверждений, которые появляются на самоподтвержденной странице (отображаемые утверждения). Например, в политике изменения профиля путь взаимодействия пользователя сначала считывает профиль пользователя из службы каталогов Azure AD B2C, а затем самоподтвержденный технический профиль задает входящие утверждения с помощью пользовательских данных, хранящихся в профиле пользователя. Эти утверждения собираются из профиля пользователя, а затем представляются пользователю, который после этого может изменить существующие данные.
<TechnicalProfile Id="SelfAsserted-ProfileUpdate">
...
<InputClaims>
<InputClaim ClaimTypeReferenceId="alternativeSecurityId" />
<InputClaim ClaimTypeReferenceId="userPrincipalName" />
<InputClaim ClaimTypeReferenceId="givenName" />
<InputClaim ClaimTypeReferenceId="surname" />
</InputClaims>
Отображаемые утверждения
Элемент DisplayClaims содержит список утверждений, которые должны быть отображены на экране для сбора данных от пользователя. Чтобы предварительно заполнить отображаемые утверждения необходимыми значениями, используйте описанные выше входящие утверждения. Элемент также может содержать значение по умолчанию.
Порядок утверждений в DisplayClaims задает порядок, в котором Azure AD B2C будет отображать утверждения на экране. Чтобы потребовать от пользователя обязательно указать значение для определенного исходящего утверждения, задайте атрибуту Required элемента OutputClaims значение true
.
Элемент ClaimType в коллекции OutputClaims должен задать для элемента UserInputType любой тип ввода пользователя, который поддерживается Azure AD B2C. Например, TextBox
или DropdownSingleSelect
.
Добавление ссылки на элемент DisplayControl
В коллекцию отображаемых утверждений можно включить ссылку на созданный элемент типа DisplayControl. Элемент управления отображением — это элемент пользовательского интерфейса, который реализует особую функциональность и взаимодействует с серверной службой Azure AD B2C. Она позволяет пользователю выполнять на странице действия, которые вызывают технический профиль проверки из внутренней службы. Например, она может проверять адрес электронной почты, номер телефона или номер карты лояльности клиента.
Ниже на примере профиля TechnicalProfile
показано использование отображаемых утверждений с элементами управления отображением.
- Первое отображаемое утверждение создает ссылку на элемент управления отображением
emailVerificationControl
, который собирает и проверяет адрес электронной почты. - Второе утверждение отображения делает ссылку на
captchaChallengeControl
элемент управления дисплеем, который создает и проверяет код CAPTCHA. - Шестое утверждение отображения делает ссылку на
phoneVerificationControl
элемент управления дисплеем, который собирает и проверяет номер телефона. - Другие отображаемые утверждения имеют тип ClaimTypes и собирают данные от пользователя.
<TechnicalProfile Id="Id">
<DisplayClaims>
<DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
<DisplayClaim DisplayControlReferenceId="captchaChallengeControl" />
<DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
<DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
<DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
<DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
</DisplayClaims>
</TechnicalProfile>
Как уже упоминалось, отображаемое утверждение со ссылкой на элемент управления отображением может выполнять собственную проверку, например проверку адреса электронной почты. Кроме того, самоподтвержденная страница поддерживает использование технического профиля проверки для проверки всей страницы, включая любые вводимые пользователем данные (типы утверждений или элементы управления отображением), перед переходом к следующему этапу оркестрации.
Сочетайте использование отображаемых утверждений и исходящих утверждений с осторожностью
Если указать один или несколько элементов DisplayClaim в самоподтвержденном техническом профиле, то необходимо будет использовать DisplayClaim для каждого утверждения, которое должно отображаться на экране и собирать данные от пользователя. В самоподтвержденном техническом профиле, содержащем хотя бы одно отображаемое утверждение, исходящие утверждения не отображаются.
Рассмотрим следующий пример, в котором утверждение age
определяется как исходящее утверждение в базовой политике. Перед добавлением любых отображаемых утверждений в самоподтвержденный технический профиль утверждение age
отображается на экране для сбора данных от пользователя.
<TechnicalProfile Id="id">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="age" />
</OutputClaims>
</TechnicalProfile>
Если конечная политика, которая наследует этот базовый объект, в дальнейшем укажет officeNumber
как отображаемое утверждение
<TechnicalProfile Id="id">
<DisplayClaims>
<DisplayClaim ClaimTypeReferenceId="officeNumber" />
</DisplayClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="officeNumber" />
</OutputClaims>
</TechnicalProfile>
Утверждение age
в базовой политике больше не отображается на экране пользователю — это фактически "скрыто". Чтобы отобразить age
утверждение и собрать значение возраста от пользователя, необходимо добавить age
DisplayClaim.
Исходящие утверждения
Элемент OutputClaims содержит список утверждений, возвращаемых в следующий этап оркестрации. Атрибут DefaultValue вступает в силу только в том случае, если утверждение до этого никогда не задавалось. Однако если значение по умолчанию было задано на предыдущем шаге оркестрации, оно не вступает в силу, даже если пользователь оставит значение пустым. Чтобы принудительно использовать значение по умолчанию, задайте атрибуту AlwaysUseDefaultValue значение true
.
Из соображений безопасности значение утверждения пароля (UserInputType
установлен равным Password
) доступно только для технических профилей проверки самоподтвержденного технического профиля. Утверждение пароля нельзя использовать на последующих этапах оркестрации.
Примечание.
В предыдущих версиях инфраструктуры процедур идентификации (Identity Experience Framework, IEF) исходящие утверждения использовались для получения данных от пользователя. Чтобы получить данные от пользователя, вместо этого используйте коллекцию DisplayClaims.
Элемент OutputClaimsTransformations может содержать коллекцию элементов OutputClaimsTransformation, которые используются для изменения исходящих утверждений или создания новых.
Когда следует использовать исходящие утверждения
В самоподтвержденном техническом профиле коллекция исходящих утверждений возвращает утверждения на следующий этап оркестрации.
Используйте исходящие утверждения в следующих случаях.
- Утверждения выводятся преобразованием исходящих утверждений.
- Задание значения по умолчанию в исходящем утверждении без сбора данных от пользователя или возвращения данных из технического профиля проверки. Самоподтвержденный технический профиль
LocalAccountSignUpWithLogonEmail
задает утверждению executed-SelfAsserted-Input значениеtrue
. - Технический профиль проверки возвращает исходящие утверждения. Технический профиль может вызывать технический профиль проверки, который возвращает некоторые утверждения. Вы можете перенаправить утверждения и вернуть их на дальнейшие шаги оркестрации на пути взаимодействия пользователя. Например, при входе в систему с помощью локальной учетной записи самоподтвержденный технический профиль с именем
SelfAsserted-LocalAccountSignin-Email
вызывает технический профиль проверки с именемlogin-NonInteractive
. Этот технический профиль проверяет учетные данные пользователя и возвращает профиль пользователя. Например, userPrincipalName, displayName, givenName и surName. - Элемент управления отображением возвращает исходящие утверждения. Ваш технический профиль может содержать ссылку на элемент управления отображением. Элемент управления отображением возвращает какие-либо утверждения, например проверенный адрес электронной почты. Вы можете перенаправить утверждения и вернуть их на дальнейшие шаги оркестрации на пути взаимодействия пользователя.
В следующем примере демонстрируется использование самоподтвержденного технического профиля, который использует и отображаемые утверждения, и исходящие утверждения.
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
<DisplayName>Email signup</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="IpAddressClaimReferenceId">IpAddress</Item>
<Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
<Item Key="language.button_continue">Create</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
<DisplayClaims>
<DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
<DisplayClaim DisplayControlReferenceId="SecondaryEmailVerificationControl" />
<DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
<DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
</DisplayClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" Required="true" />
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" />
<OutputClaim ClaimTypeReferenceId="newUser" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
</ValidationTechnicalProfiles>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
Примечание.
При сборе значения утверждения пароля в самоутверждаемом техническом профиле это значение доступно только в том же техническом профиле или в технических профилях проверки, на которые ссылается тот же самоутверждаемый технический профиль. После завершения выполнения этого самозаверяющегося технического профиля и перехода к другому техническому профилю значение пароля теряется. Следовательно, утверждение пароля может храниться только в шаге оркестрации, в котором он собирается.
Страница регистрации или входа с исходящими утверждениями
На комбинированной странице регистрации и входа обратите внимание на следующее при использовании элемента определения содержимого DataUri, определяющего тип страницы unifiedssp
или unifiedssd
.
- Отображаются только утверждения имени пользователя и пароля.
- Первыми двумя исходящими утверждениями должны быть имя пользователя и пароль (в таком порядке).
- Все прочие утверждения не отображаются; для этих утверждений необходимо либо установить
defaultValue
, либо вызвать технический профиль проверки форм утверждений.
Сохранение утверждений
Элемент Persisted Claims не используется. Cамоподтвержденный технический профиль не сохраняет данные в Azure AD B2C. Вместо этого выполняется вызов к техническому профилю проверки, который отвечает за сохранение данных. Например, политика регистрации использует самоподтвержденный технический профиль LocalAccountSignUpWithLogonEmail
для сбора нового пользовательского профиля. Технический профиль LocalAccountSignUpWithLogonEmail
вызывает технический профиль проверки для создания учетной записи в Azure AD B2C.
Технические профили проверки
Технический профиль проверки используется для проверки некоторых или всех исходящих утверждений эталонного технического профиля. Входящие утверждения технического профиля проверки должны появиться в исходящих утверждениях самоподтвержденного технического профиля. Технический профиль проверки проверяет входные данные пользователя и возвращает ошибку пользователю.
Технический профиль проверки может быть любым техническим профилем в политике, например идентификатором Microsoft Entra или техническими профилями REST API . В предыдущем примере технический профиль LocalAccountSignUpWithLogonEmail
проверяет отсутствие имени signinName в каталоге. Если оно отсутствует, технический профиль проверки создает локальную учетную запись и возвращает objectId, authenticationSource и newUser. Технический профиль SelfAsserted-LocalAccountSignin-Email
вызывает технический профиль проверки login-NonInteractive
для проверки учетных данных пользователя.
Можно также вызывать технический профиль REST API с бизнес-логикой, перезаписывать входящие утверждения или дополнять пользовательские данные за счет дальнейшей интеграции с бизнес-приложением корпоративного уровня. Дополнительные сведения см. в статье о техническом профиле проверки.
Примечание.
Технический профиль проверки активируется только при наличии входных данных от пользователя. Создать пустой технический профиль для самоподтверждения для вызова технического профиля проверки, просто чтобы воспользоваться атрибутом ContinueOnError элемента ValidationTechnicalProfile нельзя. Технический профиль проверки можно вызвать только из технического профиля для самоподтверждения, который запрашивает входные данные от пользователя или из шага оркестрации в пути взаимодействия пользователя.
Метаданные
Атрибут | Обязательное поле | Описание |
---|---|---|
setting.operatingMode 1 | No | Для страницы входа в систему это свойство управляет поведением поля имени пользователя, таким как проверка входных данных и вывод сообщений об ошибках. Ожидаемые значения: Username или Email . Ознакомьтесь с этими метаданными в живой демонстрации. |
AllowGenerationOfClaimsWithNullValues | No | Разрешает создание утверждения со значением NULL. Это происходит, например, в случае, если пользователь не установит флажок. |
ContentDefinitionReferenceId | Да | Идентификатор определения содержимого, связанного с этим техническим профилем. |
EnforceEmailVerification | No | При регистрации или изменении профиля применяет проверку по электронной почте. Возможные значения: true (по умолчанию) или false . |
setting.retryLimit | No | Определяет, сколько раз пользователь может попытаться предоставить данные, которые проверяются на соответствие техническому профилю проверки. Например, пользователь пытается зарегистрироваться с учетной записью, которая уже существует, и продолжает пытаться до достижения предела. Ознакомьтесь с этими метаданными в живой демонстрации. |
SignUpTarget 1 | No | Идентификатор обмена целевого объекта регистрации. Когда пользователь нажимает кнопку "Регистрация", Azure AD B2C выполняет указанный идентификатор обмена. |
setting.showCancelButton | No | Отображает кнопку "Отмена". Возможные значения: true (по умолчанию) или false . Ознакомьтесь с этими метаданными в живой демонстрации. |
setting.showContinueButton | No | Отображает кнопку "Продолжить". Возможные значения: true (по умолчанию) или false . Ознакомьтесь с этими метаданными в живой демонстрации. |
setting.showSignupLink 2 | No | Отображает кнопку "Регистрация". Возможные значения: true (по умолчанию) или false . Ознакомьтесь с этими метаданными в живой демонстрации. |
setting.forgotPasswordLinkLocation 2 | No | Отображает ссылку "Забыли пароль". Возможные значения: AfterLabel (по умолчанию) отображает ссылку непосредственно после метки или после поля ввода пароля при отсутствии метки; AfterInput отображает ссылку после поля ввода пароля; AfterButtons отображает ссылку в нижней части формы после кнопок, а None удаляет ссылку "Забыли пароль". Ознакомьтесь с этими метаданными в живой демонстрации. |
setting.enableRememberMe 2 | No | Отображает поле флажка Оставаться в системе. Возможные значения: true или false (по умолчанию). Ознакомьтесь с этими метаданными в живой демонстрации. |
setting.inputVerificationDelayTimeInMilliseconds 3 | No | Улучшает взаимодействие с пользователем: ожидает, когда пользователь прекратит набор, затем проверяет значение. Значение по умолчанию 2000 миллисекунд. Ознакомьтесь с этими метаданными в живой демонстрации. |
IncludeClaimResolvingInClaimsHandling | No | Для входящих и исходящих утверждений указывает, включено ли разрешение утверждений в технический профиль. Возможные значения: true или false (по умолчанию). Если вы хотите использовать сопоставитель утверждений в техническом профиле, задайте для этого параметра значение true . |
setting.forgotPasswordLinkOverride 4 | No | Выполняемый обмен утверждениями сброса пароля. Дополнительные сведения см. в разделе Самостоятельный сброс пароля. |
setting.enableCaptchaChallenge | No | Указывает, должен ли отображаться код вызова CAPTCHA. Возможные значения: true или false (по умолчанию). Для работы этого параметра элемент управления отображения CAPTCHA должен быть указан в утверждениях отображения самозаверяемого технического профиля. Функция CAPTCHA доступна в общедоступной предварительной версии. |
setting.showHeading | No | Указывает, должен ли отображаться элемент заголовка сведений о пользователе. Возможные значения: true (по умолчанию) или false . |
Примечания:
- Доступен для определения содержимого DataUri типа
unifiedssp
илиunifiedssd
. - Доступен для определения содержимого DataUri типа
unifiedssp
илиunifiedssd
. Макет страницы версии 1.1.0 и выше. - Доступно для макета страницы версии 1.2.0 и выше.
- Доступен для определения содержимого DataUri типа
unifiedssp
. Макет страницы версии 2.1.2 и выше.
Криптографические ключи
Элемент CryptographicKeys не используется.