Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".
Замечание
В Azure Active Directory B2C пользовательские политики преимущественно предназначены для выполнения сложных сценариев. В большинстве случаев рекомендуется использовать встроенные потоки пользователей. Ознакомьтесь со статьей Начало работы с настраиваемыми политиками в Azure Active Directory B2C, чтобы узнать о базовом пакете настраиваемых политик, если еще не сделали этого.
Azure Active Directory B2C (Azure AD B2C) обеспечивает поддержку управления созданием и проверкой одноразовых паролей. Используйте технический профиль для создания кода, а затем убедитесь, что код позже.
Технический профиль одноразовых паролей также может возвращать сообщение об ошибке во время проверки кода. Создайте интеграцию с одноразовым паролем с помощью технического профиля проверки. Технический профиль проверки вызывает технический профиль однократного пароля для проверки кода. Технический профиль проверки проверяет предоставленные пользователем данные до продолжения взаимодействия пользователя. При использовании технического профиля проверки на странице самозаверяющейся страницы отображается сообщение об ошибке.
Протокол
Атрибуту Name элемента Protocol необходимо присвоить значение Proprietary
. Атрибут обработчика должен содержать полное имя сборки обработчика протокола, используемой Azure AD B2C:
Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
В следующем примере показан технический профиль однократного пароля:
<TechnicalProfile Id="VerifyCode">
<DisplayName>Validate user input verification code</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
...
Создание кода
Первый режим этого технического профиля — создание кода. Ниже приведены параметры, которые можно настроить для этого режима. Коды, созданные и попытки, отслеживаются в сеансе.
Входящие утверждения
Элемент InputClaims содержит список утверждений, необходимых для отправки поставщику протокола однократного пароля. Имя утверждения также можно сопоставить с именем, указанным ниже.
ClaimReferenceId (Идентификатор ссылки) | Обязательно | Описание |
---|---|---|
идентификатор | Да | Идентификатор для идентификации пользователя, который должен проверить код позже. Обычно он используется в качестве идентификатора назначения, в котором передается код, например адрес электронной почты или номер телефона. |
Элемент InputClaimsTransformations может содержать коллекцию элементов InputClaimsTransformation , которые используются для изменения входных утверждений или создания новых перед отправкой поставщику протокола однократного пароля.
Исходящие утверждения
Элемент OutputClaims содержит список утверждений, созданных поставщиком протокола однократного пароля. Имя утверждения также можно сопоставить с именем, указанным ниже.
ClaimReferenceId (Идентификатор ссылки) | Обязательно | Описание |
---|---|---|
otpGenerated | Да | Созданный код, сеанс которого управляется Azure AD B2C. |
Элемент OutputClaimsTransformations может содержать коллекцию элементов OutputClaimsTransformation, которые используются для изменения исходящих утверждений или создания новых.
Метаданные
Для настройки режима создания кода можно использовать следующие параметры:
Свойство | Обязательно | Описание |
---|---|---|
Операция | Да | Операция, выполняемая. Возможное значение: GenerateCode . |
CodeExpirationInSeconds | нет | Время в секундах до истечения срока действия кода. Минимальное: 60 ; Максимальное: 1200 ; По умолчанию: 600 . Каждый раз, когда код предоставляется (один и тот же код или ReuseSameCode новый код), срок действия кода расширяется. Это время также используется для установки времени ожидания повторных попыток (после достижения максимального числа попыток пользователь заблокирован от попытки получить новые коды до истечения этого времени). |
CodeLength | нет | Длина кода. Значение по умолчанию — 6 . |
Символьный набор | нет | Символьный набор кода, отформатированный для использования в регулярном выражении. Например: a-z0-9A-Z . Значение по умолчанию — 0-9 . Набор символов должен содержать не менее 10 разных символов в указанном наборе. |
NumRetryAttempts | нет | Количество попыток проверки до того, как код считается недопустимым. Значение по умолчанию — 5 . Например, если задано значение NumRetryAttempts равным 2, это позволит выполнять только 2 попытки в общей сложности (сначала + 1 повтор). Для 3-й попытки он создает максимальные попытки, достигнутые независимо от того, является ли код правильным или нет. |
NumCodeGenerationAttempts | нет | Число попыток создания максимального числа попыток создания кода на идентификатор. Значение по умолчанию, 10 если оно не указано. |
ReuseSameCode | нет | Следует ли использовать тот же код, а не создавать новый код, если этот код не истек и по-прежнему действителен. Значение по умолчанию — false . |
Пример
Следующий пример TechnicalProfile
используется для создания кода:
<TechnicalProfile Id="GenerateCode">
<DisplayName>Generate Code</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="Operation">GenerateCode</Item>
<Item Key="CodeExpirationInSeconds">600</Item>
<Item Key="CodeLength">6</Item>
<Item Key="CharacterSet">0-9</Item>
<Item Key="NumRetryAttempts">5</Item>
<Item Key="NumCodeGenerationAttempts">10</Item>
<Item Key="ReuseSameCode">false</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpGenerated" />
</OutputClaims>
</TechnicalProfile>
Проверить код
Второй режим этого технического профиля — проверка кода. Ниже приведены параметры, которые можно настроить для этого режима.
Входящие утверждения
Элемент InputClaims содержит список утверждений, необходимых для отправки поставщику протокола однократного пароля. Имя утверждения также можно сопоставить с именем, указанным ниже.
ClaimReferenceId (Идентификатор ссылки) | Обязательно | Описание |
---|---|---|
идентификатор | Да | Идентификатор для идентификации пользователя, который ранее создал код. Обычно он используется в качестве идентификатора назначения, в котором передается код, например адрес электронной почты или номер телефона. |
otpToVerify | Да | Код проверки, предоставленный пользователем. |
Элемент InputClaimsTransformations может содержать коллекцию элементов InputClaimsTransformation , которые используются для изменения входных утверждений или создания новых перед отправкой поставщику протокола однократного пароля.
Исходящие утверждения
Во время проверки кода этого поставщика протокола не предоставляются выходные утверждения.
Элемент OutputClaimsTransformations может содержать коллекцию элементов OutputClaimsTransformation, которые используются для изменения исходящих утверждений или создания новых.
Метаданные
Следующие параметры можно использовать для режима проверки кода:
Свойство | Обязательно | Описание |
---|---|---|
Операция | Да | Операция, выполняемая. Возможное значение: VerifyCode . |
Элементы пользовательского интерфейса
Следующие метаданные можно использовать для настройки сообщений об ошибках, отображаемых при сбое проверки кода. Метаданные должны быть настроены в самозаверяемом техническом профиле. Сообщения об ошибках можно локализовать.
Свойство | Обязательно | Описание |
---|---|---|
UserMessageIfSessionDoesSotExist | нет | Сообщение, отображаемое пользователю, если истек срок действия сеанса проверки кода. Это либо истек срок действия кода, либо код никогда не был создан для заданного идентификатора. |
UserMessageIfMaxRetryAttempt (ПользовательСообщениеIfMaxRetryAttempt) | нет | Сообщение, отображаемое пользователю, если превышено максимально допустимое количество попыток проверки. |
UserMessageIfMaxNumberOfCodeGenerated | нет | Сообщение, отображаемое пользователю в случае превышения максимального количества попыток создания кода. |
UserMessageIfInvalidCode (Сообщение пользователяIfInvalidCode) | нет | Сообщение, отображаемое пользователю, если он предоставил недопустимый код. |
UserMessageIfVerificationFailedRetryAllowed | нет | Сообщение, отображаемое пользователю, если он предоставил недопустимый код, и пользователю разрешено предоставить правильный код. |
UserMessageIfSessionConflict (Конфликт UserMessageIfSession) | нет | Сообщение, отображаемое пользователю, если код не может быть проверен. |
Пример
Следующий пример TechnicalProfile
используется для проверки кода:
<TechnicalProfile Id="VerifyCode">
<DisplayName>Verify Code</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="Operation">VerifyCode</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
<InputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpToVerify" />
</InputClaims>
</TechnicalProfile>
Дальнейшие шаги
См. следующую статью, например, использование однократного технического профиля пароля с пользовательской проверкой электронной почты: