Control de visualización de TOTP

Use controles de visualización de Contraseñas de un solo uso y duración definida (TOTP) para habilitar la autenticación multifactor mediante el método TOTP. Los usuarios finales necesitan usar una aplicación autenticadora que genere códigos TOTP, como la aplicación Microsoft Authenticator o cualquier otra aplicación autenticadora que admita verificación por TOTP.

Para habilitar TOTP en la directiva personalizada, use los siguientes controles de visualización:

  • totpQrCodeControl: representa el código QR y un vínculo profundo. Cuando el usuario examina el código QR o abre el vínculo profundo, se abre la aplicación autenticadora para que el usuario pueda completar el proceso de inscripción.
  • AuthenticatorAppIconControl: representa el icono de la aplicación Microsoft Authenticator con un vínculo para descargar la aplicación en el dispositivo móvil del usuario.
  • AuthenticatorInfoControl: representa la introducción a TOTP.

En la captura de pantalla siguiente se muestra la página de inscripción de TOTP con los tres controles de visualización.

Screenshot showing TOTP display controls enrollment flow

El siguiente fragmento de código XML muestra los tres controles de visualización:

  <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>

Se hace referencia a los controles de visualización desde un perfil técnico autofirmado. El perfil técnico autoafirmado usa la transformación de notificaciones de entrada para preparar las notificaciones de entrada qrCodeContent y secretKey necesarias.

Se debe llamar a las transformaciones de notificaciones de entrada en el orden siguiente:

  1. Tipo CreateSecret de transformación de notificaciones de CreateOtpSecret. La transformación de notificaciones crea una clave secreta TOTP. Esta clave se almacena más adelante en el perfil del usuario en Azure AD B2C y se comparte con la aplicación autenticadora. La aplicación autenticadora usa la clave para generar un código TOTP que el usuario necesita para superar la MFA. La directiva personalizada usa la clave para validar el código TOTP proporcionado por el usuario.
  2. Tipo CreateIssuer de transformación de notificaciones de CreateStringClaim. La transformación de notificaciones crea el nombre del emisor TOTP. El nombre del emisor es el nombre del inquilino, como "Contoso demo".
  3. Tipo CreateUriLabel de transformación de notificaciones de FormatStringMultipleClaims. La transformación de notificaciones crea la etiqueta del URI TOTP. La etiqueta es una combinación del identificador único del usuario, como la dirección de correo electrónico, y el nombre del emisor, por ejemplo, Contoso demo:emily@fabrikam.com.
  4. Tipo CreateUriString de transformación de notificaciones de BuildUri. La transformación de notificaciones crea la cadena del URI TOTP. La cadena es una combinación de la etiqueta del URI y la clave secreta, por ejemplo, \otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo. Esta etiqueta del URI se representa mediante el control de visualización en un formato de código QR y un vínculo profundo.

El código XML siguiente muestra el perfil técnico autoafirmado EnableOTPAuthentication con su transformación de notificaciones de entrada, notificaciones de entrada y controles de visualización.

<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>

Flujo de comprobación

El código TOTP de comprobación se realiza mediante otro perfil técnico autoafirmado que usa notificaciones de visualización y un perfil técnico de validación. Para más información, consulte Definición de un perfil técnico de autenticación multifactor de Microsoft Entra ID en una directiva personalizada de Azure AD B2C.

En la captura de pantalla siguiente se muestra una página de comprobación de TOTP.

Screenshot showing TOTP display controls verification flow

Pasos siguientes