Controllo di visualizzazione TOTP

Usare i controlli di visualizzazione TOTP (One-Time Password) basati sul tempo per abilitare l'autenticazione a più fattori usando il metodo TOTP. Gli utenti finali devono usare un'app di autenticazione che genera codici TOTP, ad esempio l'app Microsoft Authenticator o qualsiasi altra app di autenticazione che supporta la verifica TOTP.

Per abilitare TOTP all'interno dei criteri personalizzati, usare i controlli di visualizzazione seguenti:

  • totpQrCodeControl : eseguire il rendering del codice a matrice e di un collegamento diretto. Quando l'utente analizza il codice a matrice o apre il collegamento diretto, l'app di autenticazione viene aperta in modo che l'utente possa completare il processo di registrazione.
  • AuthenticatorAppIconControl : eseguire il rendering dell'icona dell'app Microsoft Authenticator con un collegamento per scaricare l'app nel dispositivo mobile dell'utente.
  • AuthenticatorInfoControl : eseguire il rendering dell'introduzione a TOTP.

Lo screenshot seguente illustra la pagina di registrazione TOTP che mostra i tre controlli di visualizzazione.

Screenshot showing TOTP display controls enrollment flow

Il frammento XML seguente mostra i tre controlli di visualizzazione:

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

I controlli di visualizzazione vengono a cui viene fatto riferimento da un profilo tecnico autocertificato. Il profilo tecnico autocertificato usa la trasformazione delle attestazioni di input per preparare le attestazioni richieste e secretKey di input necessarieqrCodeContent.

Le trasformazioni delle attestazioni di input devono essere chiamate nell'ordine seguente:

  1. Tipo CreateSecret di trasformazione delle attestazioni di CreateOtpSecret. La trasformazione delle attestazioni crea una chiave privata TOTP. Questa chiave viene archiviata successivamente nel profilo dell'utente in Azure AD B2C e viene condivisa con l'app di autenticazione. L'app di autenticazione usa la chiave per generare un codice TOTP che l'utente deve passare tramite MFA. I criteri personalizzati usano la chiave per convalidare il codice TOTP fornito dall'utente.
  2. Tipo CreateIssuer di trasformazione delle attestazioni di CreateStringClaim. La trasformazione delle attestazioni crea il nome dell'autorità emittente TOTP. Il nome dell'autorità emittente è il nome del tenant, ad esempio "Contoso demo".
  3. Tipo CreateUriLabel di trasformazione delle attestazioni di FormatStringMultipleClaims. La trasformazione delle attestazioni crea l'etichetta URI TOTP. L'etichetta è una combinazione dell'identificatore univoco dell'utente, ad esempio l'indirizzo di posta elettronica e il nome dell'autorità emittente, Contoso demo:emily@fabrikam.comad esempio .
  4. Tipo CreateUriString di trasformazione delle attestazioni di BuildUri. La trasformazione delle attestazioni crea la stringa URI TOTP. La stringa è una combinazione dell'etichetta URI e della chiave privata, otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demoad esempio . Il rendering di questa etichetta URI viene eseguito dal controllo display in formato di codice a matrice e da un collegamento diretto.

Il codice XML seguente mostra il EnableOTPAuthentication profilo tecnico autocertificato con la trasformazione delle attestazioni di input, le attestazioni di input e i controlli di visualizzazione.

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

Flusso di verifica

Il codice TOTP di verifica viene eseguito da un altro profilo tecnico autocertificato che usa attestazioni di visualizzazione e un profilo tecnico di convalida. Per altre informazioni, vedere Definire un profilo tecnico di autenticazione a più fattori di Microsoft Entra ID in un criterio personalizzato di Azure AD B2C.

Lo screenshot seguente illustra una pagina di verifica TOTP.

Screenshot showing TOTP display controls verification flow

Passaggi successivi