Поделиться через


Элемент управления отображением TOTP

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

Чтобы включить TOTP в пользовательской политике, используйте следующие элементы управления отображением:

  • totpQrCodeControl — отрисовывает QR-код и прямую ссылку. Если пользователь сканирует QR-код или открывает прямую ссылку, открывается приложение-аутентификатор, чтобы пользователь мог завершить процесс регистрации.
  • AuthenticatorAppIconControl — отрисовывает значок приложения Microsoft Authenticator со ссылкой на скачивание приложения на мобильном устройстве пользователя.
  • AuthenticatorInfoControl — отрисовывает введение в TOTP.

На следующем снимке экрана показана страница регистрации TOTP с тремя элементами управления отображением.

Screenshot showing TOTP display controls enrollment flow

В следующем фрагменте кода XML приведены три элемента управления отображением:

  <DisplayControls>
    <!-- Render the QR code by taking the URI (qrCodeContent) input claim and rendering it as a QR code-->
    <DisplayControl Id="totpQrCodeControl" UserInterfaceControlType="QrCodeControl">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="qrCodeContent" />
      </InputClaims>
      <DisplayClaims>
        <DisplayClaim ClaimTypeReferenceId="qrCodeContent" ControlClaimType="QrCodeContent" />
      </DisplayClaims>
    </DisplayControl>

    <!-- Render the TOTP information by taking the totpIdentifier and the secretKey input claims and rendering them in plain text-->
    <DisplayControl Id="authenticatorInfoControl" UserInterfaceControlType="AuthenticatorInfoControl">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="totpIdentifier" />
        <InputClaim ClaimTypeReferenceId="secretKey" />
      </InputClaims>
      <DisplayClaims>
        <DisplayClaim ClaimTypeReferenceId="totpIdentifier" />
        <DisplayClaim ClaimTypeReferenceId="secretKey" />
      </DisplayClaims>
    </DisplayControl>

    <!-- Render the authenticator apps icon. -->
    <DisplayControl Id="authenticatorAppIconControl" UserInterfaceControlType="AuthenticatorAppIconControl" />
  </DisplayControls>

Ссылки на элементы управления отображением приводятся из технического профиля для самоподтверждения. Технический профиль для самоподтверждения использует преобразование входных утверждений для подготовки обязательных входных утверждений qrCodeContent и secretKey.

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

  1. CreateSecret принимает тип преобразования CreateOtpSecret. Преобразование утверждений создает секретный ключ TOTP. Этот ключ хранится в профиле пользователя в Azure AD B2C и передается приложению-аутентификатору. Приложение-аутентификатор использует этот ключ для создания кода TOTP, который нужен пользователю для прохождения MFA. Пользовательская политика использует этот ключ для проверки кода TOTP, предоставленного пользователем.
  2. CreateIssuer принимает тип преобразования CreateStringClaim. Преобразование утверждений создает имя издателя TOTP. Имя издателя — это имя вашего арендатора, например "Contoso demo".
  3. CreateUriLabel принимает тип преобразования FormatStringMultipleClaims. Преобразование утверждений создает метку URI для TOTP. Эта метка представляет собой сочетание уникального идентификатора пользователя, например адреса электронной почты, с именем издателя, например Contoso demo:emily@fabrikam.com.
  4. CreateUriString принимает тип преобразования BuildUri. Преобразование утверждений создает строку URI для TOTP. Эта строка представляет собой сочетание метки URI с секретным ключом, например otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo. Эта метка URI отрисовывается элементом управления отображением в формате QR-кода и в виде прямой ссылки.

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

<TechnicalProfile Id="EnableOTPAuthentication">
  <DisplayName>Sign up with Authenticator app</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ContentDefinitionReferenceId">api.selfasserted.totp</Item>
    <Item Key="language.button_continue">Continue</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
  </CryptographicKeys>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateSecret" />
    <InputClaimsTransformation ReferenceId="CreateIssuer" />
    <InputClaimsTransformation ReferenceId="CreateUriLabel" />
    <InputClaimsTransformation ReferenceId="CreateUriString" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="qrCodeContent" />
    <InputClaim ClaimTypeReferenceId="secretKey" />
  </InputClaims>
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="authenticatorAppIconControl" />
    <DisplayClaim ClaimTypeReferenceId="QrCodeScanInstruction" />
    <DisplayClaim DisplayControlReferenceId="totpQrCodeControl" />
    <DisplayClaim DisplayControlReferenceId="authenticatorInfoControl" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="secretKey" />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-MFA-TOTP" />
</TechnicalProfile>

Поток проверки

Код TOTP для проверки выполняется другим техническим профилем для самоподтверждения, который использует утверждения отображения и технический профиль для проверки. Дополнительные сведения см. в разделе "Определение технического профиля многофакторной проверки подлинности Идентификатора Майкрософт" в пользовательской политике Azure AD B2C.

На следующем снимке экрана показана страница проверки TOTP.

Screenshot showing TOTP display controls verification flow

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