Бөлісу құралы:


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

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

Протокол

Атрибуту Name элемента Protocol необходимо присвоить значение Proprietary. Атрибут handler должен содержать полное имя сборки обработчика протокола, которое используется Azure AD B2C:

Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

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

<TechnicalProfile Id="AzureMfa-SendSms">
    <DisplayName>Send Sms</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    ...

Режим проверки телефона

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

Технический профиль предоставляет методы для отправки кода проверки через SMS и проверки кода. На следующем снимке экрана показан поток проверки телефона.

Screenshot showing TOTP flow

Отправка SMS

Чтобы проверить телефон, на первом шаге создается код, которые отправляется на номер телефона. Для данного шага можно настроить следующие параметры.

Входящие утверждения

Элемент InputClaims содержит список утверждений для отправки в многофакторную проверку подлинности Microsoft Entra. К тому же можно сопоставить имя вашего утверждения с именем, заданным в техническом профиле MFA.

ClaimReferenceId Обязательное поле Описание:
userPrincipalName Да Идентификатор пользователя, владеющего номером телефона.
phoneNumber Да Номер телефона для отправки кода SMS.
companyName No Название компании в SMS. Если этот параметр не указан, используется имя приложения.
locale No Языковой стандарт SMS. Если не указан, используется языковой стандарт браузера.

Исходящие утверждения

Поставщик протокола многофакторной проверки подлинности Microsoft Entra не возвращает выходные утверждения, поэтому не требуется указывать выходные утверждения.

Метаданные

Элемент метаданных содержит следующий атрибут.

Атрибут Обязательное поле Описание:
Operation Да Этот параметр должен содержать значение OneWaySMS.
Элементы пользовательского интерфейса

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

Атрибут Обязательное поле Описание
UserMessageIfCouldntSendSms No Сообщение об ошибке пользователя, если указанный номер телефона не принимает SMS.
UserMessageIfInvalidFormat No Сообщение об ошибке пользователя, если указанный номер телефона не является допустимым.
UserMessageIfServerError No Сообщение об ошибке пользователя, если на сервере произошла внутренняя ошибка.
UserMessageIfThrottled No Сообщение об ошибке пользователя, если запрос был усечен.

Пример. Отправка SMS

В следующем примере показан технический профиль многофакторной проверки подлинности Идентификатора Майкрософт, который используется для отправки кода через SMS.

<TechnicalProfile Id="AzureMfa-SendSms">
  <DisplayName>Send Sms</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">OneWaySMS</Item>
  </Metadata>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CombinePhoneAndCountryCode" />
    <InputClaimsTransformation ReferenceId="ConvertStringToPhoneNumber" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
    <InputClaim ClaimTypeReferenceId="fullPhoneNumber" PartnerClaimType="phoneNumber" />
  </InputClaims>
</TechnicalProfile>

Проверить код

На этапе проверки кода проверяется код, отправленный пользователю. Для данного шага можно настроить следующие параметры.

Входящие утверждения

Элемент InputClaims содержит список утверждений для отправки в многофакторную проверку подлинности Microsoft Entra. К тому же можно сопоставить имя вашего утверждения с именем, заданным в техническом профиле MFA.

ClaimReferenceId Обязательное поле Описание:
phoneNumber Да Тот же номер телефона, который использовался ранее для отправки кода. Он также используется для размещения сеанса проверки телефона.
verificationCode Да Код проверки, предоставленный пользователем для верификации.

Исходящие утверждения

Поставщик протокола многофакторной проверки подлинности Microsoft Entra не возвращает выходные утверждения, поэтому не требуется указывать выходные утверждения.

Метаданные

Элемент метаданных содержит следующий атрибут.

Атрибут Обязательное поле Описание:
Operation Да Этот параметр должен содержать значение Verify.
Элементы пользовательского интерфейса

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

Атрибут Обязательное поле Описание
UserMessageIfMaxAllowedCodeRetryReached No Сообщение об ошибке пользователя, если пользователь попытался ввести код проверки слишком много раз.
UserMessageIfServerError No Сообщение об ошибке пользователя, если на сервере произошла внутренняя ошибка.
UserMessageIfThrottled No Сообщение об ошибке пользователя, если запрос регулируется.
UserMessageIfWrongCodeEntered No Сообщение об ошибке пользователя, если код, введенный для проверки, неправильный.

Пример: проверка кода

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

<TechnicalProfile Id="AzureMfa-VerifySms">
    <DisplayName>Verify Sms</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <Metadata>
        <Item Key="Operation">Verify</Item>
    </Metadata>
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="phoneNumber" PartnerClaimType="phoneNumber" />
        <InputClaim ClaimTypeReferenceId="verificationCode" />
    </InputClaims>
</TechnicalProfile>

Режим TOTP

В этом режиме пользователю необходимо установить любое приложение для проверки подлинности, которое поддерживает проверку на основе одноразового пароля с ограниченным сроком действия (TOTP), например приложение Microsoft Authenticator, на устройстве, которому они принадлежат.

Во время первой регистрации или входа пользователь сканирует QR-код, открывает глубокую ссылку или вводит код вручную с помощью приложения проверки подлинности. Чтобы проверить код TOTP, используйте технический профиль проверки Начать проверку OTP, а затем Проверить TOTP.

Для последующих входов используйте метод Получить доступные устройства, чтобы проверить, зарегистрирован ли пользователь на устройстве. Если число доступных устройств больше нуля, это означает, что пользователь зарегистрировался ранее. В этом случае пользователю необходимо ввести код TOTP, который отображается в приложении проверки подлинности.

Технический профиль:

  • Не предоставляет интерфейс для взаимодействия с пользователем. Взамен этого пользовательский интерфейс можно вызывать из технического профиля с самостоятельным подтверждением, с элементами управления отображением TOTP.
  • Использует службу многофакторной проверки подлинности Microsoft Entra для проверки кода TOTP.
  • Проверяет, зарегистрировал ли пользователь устройство.

На следующем снимке экрана показан поток регистрации и проверки TOTP. Он начинается с проверки количества доступных устройств. Если количество доступных устройств равно нулю, пользователь проходит через шаг оркестрации процесса регистрации. В противном случае пользователь проходит шаг оркестрации процесса проверки.

Screenshot showing TOTP flow.

Получение доступных устройств

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

Входящие утверждения

Элемент InputClaims содержит список утверждений для отправки в многофакторную проверку подлинности Microsoft Entra. К тому же можно сопоставить имя вашего утверждения с именем, заданным в техническом профиле MFA.

ClaimReferenceId Обязательное поле Описание:
userPrincipalName Да Имя субъекта-пользователя.

Исходящие утверждения

Элемент выходных утверждений содержит список утверждений, возвращаемых из многофакторной проверки подлинности Microsoft Entra. К тому же можно сопоставить имя вашего утверждения с именем, заданным в техническом профиле MFA.

ClaimReferenceId Обязательное поле Описание:
numberOfAvailableDevices Да Число доступных устройств для пользователя.

Метаданные

Элемент метаданных содержит следующий атрибут.

Атрибут Обязательное поле Описание:
Operation Да Этот параметр должен содержать значение GetAvailableDevices.

Пример: получение доступных устройств

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

<TechnicalProfile Id="AzureMfa-GetAvailableDevices">
  <DisplayName>Get Available Devices</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">GetAvailableDevices</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="numberOfAvailableDevices" />
  </OutputClaims>
</TechnicalProfile>

Начать проверку TOTP

Процесс "Начать проверку TOTP" запускает процесс проверки. Этот технический профиль проверки вызывается из технического профиля с самостоятельным утверждением, который представляет и проверяет коды TOTP. После этого технического профиля проверки следует вызвать профиль Проверить TOTP.

Входящие утверждения

Элемент InputClaims содержит список утверждений для отправки в многофакторную проверку подлинности Microsoft Entra. К тому же можно сопоставить имя вашего утверждения с именем, заданным в техническом профиле MFA.

ClaimReferenceId Обязательное поле Описание:
userPrincipalName Да Имя субъекта-пользователя.
objectId Да Идентификатор объекта пользователя.
secretKey Да Секретный ключ пользователя. Этот ключ хранится в профиле пользователя в каталоге Azure AD B2C и используется совместно с приложением для проверки подлинности. Приложение для проверки подлинности использует секрет для создания кода TOTP. Этот технический профиль использует секрет для проверки кода TOTP.

Исходящие утверждения

Поставщик протокола многофакторной проверки подлинности Microsoft Entra не возвращает выходные утверждения, поэтому не требуется указывать выходные утверждения.

Метаданные

Элемент метаданных содержит следующий атрибут.

Атрибут Обязательное поле Описание:
Operation Да Этот параметр должен содержать значение BeginVerifyOTP.

Пример. Начать проверку TOTP

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

<TechnicalProfile Id="AzureMfa-BeginVerifyOTP">
  <DisplayName>Begin verify TOTP"</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">BeginVerifyOTP</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="secretKey" />
    <InputClaim ClaimTypeReferenceId="objectId" />
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
  </InputClaims>
</TechnicalProfile>

Проверить TOTP

Метод проверки TOTP проверяет код TOTP. Этот технический профиль проверки вызывается из технического профиля с самостоятельным утверждением, который представляет и проверяет коды TOTP. Перед этим техническим профилем проверки следует вызвать профиль Начать проверку TOTP.

Входящие утверждения

Элемент InputClaims содержит список утверждений для отправки в многофакторную проверку подлинности Microsoft Entra. К тому же можно сопоставить имя вашего утверждения с именем, заданным в техническом профиле MFA.

ClaimReferenceId Обязательное поле Описание:
otpCode Да Код TOTP, предоставленный пользователем.

Исходящие утверждения

Поставщик протокола многофакторной проверки подлинности Microsoft Entra не возвращает выходные утверждения, поэтому не требуется указывать выходные утверждения.

Метаданные

Элемент метаданных содержит следующий атрибут.

Атрибут Обязательное поле Описание:
Operation Да Этот параметр должен содержать значение VerifyOTP.

Пример. Проверить TOTP

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

<TechnicalProfile Id="AzureMfa-VerifyOTP">
  <DisplayName>Verify OTP</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">VerifyOTP</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="otpCode" />
  </InputClaims>
</TechnicalProfile>

Следующие шаги