Condividi tramite


Controllo del display TOTP

Importante

A partire dal 1° maggio 2025, Azure AD B2C non sarà più disponibile per l'acquisto per i nuovi clienti. Altre informazioni sono disponibili nelle domande frequenti.

Utilizzare i controlli di visualizzazione TOTP (Time-Based One-Time Password) per abilitare l'autenticazione a più fattori utilizzando 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, utilizzare i controlli di visualizzazione seguenti:

  • totpQrCodeControl - Renderizza il codice QR e un collegamento diretto. Quando l'utente esegue la scansione del codice QR o apre il collegamento diretto, si apre l'app di autenticazione in modo che l'utente possa completare il processo di registrazione.
  • AuthenticatorAppIconControl: esegue il rendering dell'icona dell'app Microsoft Authenticator con un collegamento per scaricare l'app nel dispositivo mobile dell'utente.
  • AuthenticatorInfoControl - Esegue il rendering dell'introduzione TOTP.

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

Screenshot che mostra il display TOTP controlla il flusso di iscrizione

Nel frammento di codice XML seguente vengono illustrati 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 del display sono referenziati da un profilo tecnico autocertificato. Il profilo tecnico autocertificato usa la trasformazione delle attestazioni di input per preparare le attestazioni di input e richieste qrCodeContentsecretKey .

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 successivamente archiviata nel profilo dell'utente in Azure AD B2C e condivisa con l'app di autenticazione. L'app di autenticazione usa la chiave per generare un codice TOTP di cui l'utente ha bisogno per passare attraverso l'MFA. I criteri personalizzati utilizzano la chiave per convalidare il codice TOTP fornito dall'utente.
  2. Tipo di trasformazione delle CreateIssuer 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 di trasformazione delle CreateUriLabel 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 e-mail, e il nome dell'emittente, ad esempio Contoso demo:emily@fabrikam.com.
  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 segreta, ad esempio otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo. Il rendering di questa etichetta URI viene eseguito dal controllo dello schermo in un formato di codice QR e in un collegamento diretto.

Nel codice XML seguente viene illustrato il profilo tecnico autocertificato con la trasformazione delle attestazioni di input, le EnableOTPAuthentication 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 utilizza attestazioni di visualizzazione e un profilo tecnico di convalida. Per altre informazioni, vedere Definire un profilo tecnico di autenticazione a più fattori ID Microsoft Entra in un criterio personalizzato di Azure AD B2C.

Lo screenshot seguente illustra una pagina di verifica TOTP.

Screenshot che mostra il flusso di verifica dei controlli TOTP

Passaggi successivi