Определение технического профиля одноразового пароля в пользовательской политике Azure AD B2C

Примечание

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

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

Во время проверки кода технический профиль одноразового пароля также может возвращать сообщение об ошибке. Разработайте интеграцию с одноразовым паролем с помощью технического профиля проверки. Технический профиль проверки вызывает для проверки кода технический профиль одноразового пароля. Этот профиль проверяет данные, предоставленные пользователем, прежде чем продолжать путь взаимодействия пользователя. С помощью технического профиля проверки сообщение об ошибке отображается на странице с автоматическим подтверждением.

Протокол

Атрибуту Name элемента Protocol необходимо присвоить значение Proprietary. Атрибут handler должен содержать полное имя сборки обработчика протокола, которое используется 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, которые используются для изменения исходящих утверждений или создания новых.

Метаданные

Для настройки режима создания кода можно использовать следующие параметры:

attribute Обязательно Описание
Операция Да Операция, которая выполняется. Возможное значение: GenerateCode.
CodeExpirationInSeconds Нет Время в секундах до истечения срока действия кода. Минимальное значение: 60; максимальное значение: 1200; значение по умолчанию: 600. При каждом предоставлении (того же кода с помощьюReuseSameCode или нового кода) срок действия кода увеличивается. Это время также используется для задания времени ожидания для повторных попыток (достигнув максимального количества возможных попыток, пользователь не сможет получить новые коды до истечения этого времени)
CodeLength Нет Длина кода. Значение по умолчанию — 6.
CharacterSet Нет Кодировка для кода, отформатированная для использования в регулярном выражении. Например, a-z0-9A-Z. Значение по умолчанию: 0-9. Кодировка должна содержать не менее 10 различных символов в указанном наборе.
NumRetryAttempts Нет Количество попыток проверки, прежде чем код будет признан недействительным. Значение по умолчанию — 5. Например, если задать для параметра NumRetryAttempts значение 2, будет разрешено всего 2 попытки (первая + 1 повторная попытка). При третьей попытке система выдаст сообщение о достижении максимального количества попыток, независимо от того, правильный код или нет.
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, которые используются для изменения исходящих утверждений или создания новых.

Метаданные

В режиме проверки кода можно использовать указанные ниже параметры.

attribute Обязательно Описание
Операция Да Операция, которая выполняется. Возможное значение: VerifyCode.

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

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

attribute Обязательно Описание
UserMessageIfSessionDoesNotExist Нет Сообщение, отображаемое пользователю, если срок действия сеанса проверки кода истек. Такое сообщение появляется, когда срок действия кода истек, либо код для этого идентификатора еще не создавался.
UserMessageIfMaxRetryAttempted Нет Сообщение, отображаемое пользователю в случае превышения максимального количества попыток проверки.
UserMessageIfMaxNumberOfCodeGenerated Нет Сообщение, отображаемое пользователю в случае превышения максимального количества попыток создания кода.
UserMessageIfInvalidCode Нет Сообщение, отображаемое пользователю, если он предоставил недопустимый код.
UserMessageIfVerificationFailedRetryAllowed Нет Сообщение, отображаемое пользователю в случае предоставления недопустимого кода. При этом пользователю предоставляется возможность указать правильный код.
UserMessageIfSessionConflict Нет Сообщение, отображаемое пользователю, если не удается проверить код.

Пример

Следующий пример 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>

Дальнейшие действия

Ознакомьтесь со следующей статьей, в которой приведен пример использования технического профиля одноразового пароля с пользовательской проверкой по электронной почте.

  • Пользовательская проверка по электронной почте в Azure Active Directory B2C (Mailjet, SendGrid)