Compartilhar via


Controle de exibição TOTP

Use os controles de exibição de senha única baseada em tempo (TOTP) para habilitar a autenticação multifator usando o método TOTP. Os usuários finais precisam usar um aplicativo autenticador que gere códigos TOTP, como o aplicativo Microsoft Authenticator ou qualquer outro aplicativo autenticador que de suporte à verificação de TOTP.

Para habilitar o TOTP em sua política personalizada, use os seguintes controles de exibição:

  • totpQrCodeControl - Renderizar o código QR e um link profundo. Quando o usuário examina o código QR ou abre o link profundo, o aplicativo autenticador é aberto para que o usuário possa concluir o processo de registro.
  • AuthenticatorAppIconControl - Renderizar o ícone do aplicativo Microsoft Authenticator com um link para baixar o aplicativo no dispositivo móvel do usuário.
  • AuthenticatorInfoControl - Renderizar a introdução do TOTP.

A captura de tela a seguir ilustra a página de registro TOTP mostrando os três controles de exibição.

Screenshot showing TOTP display controls enrollment flow

O snippet XML a seguir mostra os três controles de exibição:

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

Os controles de exibição são referenciados por um perfil técnico autodeclarado. O perfil técnico autodeclarado usa a transformação de declarações de entrada para preparar as declarações de entrada qrCodeContent e secretKey necessárias.

As transformações de declarações de entrada devem ser chamadas na seguinte ordem:

  1. O tipo de transformação de declarações CreateSecret de CreateOtpSecret. A transformação de declarações cria uma chave secreta TOTP. Essa chave é armazenada posteriormente no perfil do usuário no Azure AD B2C e é compartilhada com o aplicativo autenticador. O aplicativo autenticador usa a chave para gerar um código TOTP que o usuário precisa para passar pela MFA. Sua política personalizada usa a chave para validar o código TOTP fornecido pelo usuário.
  2. O tipo de transformação de declarações CreateIssuer de CreateStringClaim. A transformação de declarações cria o nome do emissor da TOTP. O nome do emissor é o nome do locatário, como "Demonstração da Contoso".
  3. O tipo de transformação de declarações CreateUriLabel de FormatStringMultipleClaims. A transformação de declarações cria o rótulo do URI de TOTP. O rótulo é uma combinação do identificador exclusivo do usuário, como o endereço de email, com o nome do emissor, por exemplo, Contoso demo:emily@fabrikam.com.
  4. O tipo de transformação de declarações CreateUriString de BuildUri. A transformação de declarações cria a cadeia de caracteres do URI de TOTP. A cadeia de caracteres é uma combinação do rótulo do URI e da chave secreta, por exemplo, otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo. Esse rótulo do URI é renderizado pelo controle de exibição em um formato de código QR e um link profundo.

O código XML a seguir mostra o perfil técnico autodeclarado EnableOTPAuthentication com sua transformação de declarações de entrada, declarações de entrada e controles de exibição.

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

Fluxo de verificação

O código TOTP de verificação é feito por outro perfil técnico autodeclarado que usa declarações de exibição e um perfil técnico de validação. Para obter mais informações, consulte Definir um perfil técnico de autenticação multifator do Microsoft Entra ID em uma política personalizada do Azure AD B2C.

A captura de tela a seguir ilustra uma página de verificação de TOTP.

Screenshot showing TOTP display controls verification flow

Próximas etapas