Condividi tramite


Definire un profilo tecnico di password monouso in un criterio personalizzato di Azure AD B2C

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.

Annotazioni

In Azure Active Directory B2C i criteri personalizzati sono stati progettati principalmente per far fronte a scenari complessi. Per la maggior parte degli scenari, è consigliabile usare i flussi utente predefiniti. In caso contrario, vedere Introduzione ai criteri personalizzati in Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) offre supporto per la gestione della generazione e della verifica di una password monouso. Usare un profilo tecnico per generare un codice e quindi verificare il codice in un secondo momento.

Il profilo tecnico della password monouso può anche restituire un messaggio di errore durante la verifica del codice. Progettare l'integrazione con la password monouso usando un profilo tecnico di convalida. Un profilo tecnico di convalida chiama il profilo tecnico di password monouso per verificare un codice. Il profilo tecnico di convalida convalida i dati forniti dall'utente prima che il percorso utente continui. Con il profilo tecnico di convalida, viene visualizzato un messaggio di errore in una pagina autocertificata.

Protocollo

L'attributo Nome dell'elemento Protocollo deve essere impostato su Proprietary. L'attributo del gestore deve contenere il nome completo dell'assembly del gestore di protocollo usato da Azure AD B2C:

Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

L'esempio seguente mostra un profilo tecnico di password monouso:

<TechnicalProfile Id="VerifyCode">
  <DisplayName>Validate user input verification code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...

Genera codice

La prima modalità di questo profilo tecnico consiste nel generare un codice. Di seguito sono riportate le opzioni che possono essere configurate per questa modalità. I codici generati e i tentativi vengono rilevati all'interno della sessione.

Attestazioni di input

L'elemento InputClaims contiene un elenco di attestazioni necessarie per l'invio al provider di protocolli password monouso. È anche possibile eseguire il mapping del nome dell'attestazione al nome definito di seguito.

ClaimReferenceId Obbligatorio Descrizione
identificatore Identificatore per identificare l'utente che deve verificare il codice in un secondo momento. Viene comunemente usato come identificatore della destinazione in cui viene recapitato il codice, ad esempio indirizzo di posta elettronica o numero di telefono.

L'elemento InputClaimsTransformations può contenere una raccolta di elementi InputClaimsTransformation utilizzati per modificare le attestazioni di input o generarne di nuove prima di inviarle al provider di protocollo password monouso.

Attestazioni di output

L'elemento OutputClaims contiene un elenco di attestazioni generate dal provider di protocollo password monouso. È anche possibile eseguire il mapping del nome dell'attestazione al nome definito di seguito.

ClaimReferenceId Obbligatorio Descrizione
otpGenerated Codice generato la cui sessione è gestita da Azure AD B2C.

L'elemento OutputClaimsTransformations può contenere una raccolta di elementi OutputClaimsTransformation che vengono usati per modificare le attestazioni di output o per generarne di nuove.

Metadati

Per configurare la modalità di generazione del codice, è possibile usare le impostazioni seguenti:

Attributo Obbligatorio Descrizione
Operazione Operazione da eseguire. Valore possibile: GenerateCode.
CodeExpirationInSeconds NO Tempo in secondi fino alla scadenza del codice. Minimo: 60; Massimo: 1200; Impostazione predefinita: 600. Ogni volta che viene fornito un codice (stesso codice usando ReuseSameCodeo un nuovo codice), la scadenza del codice viene estesa. Questa volta viene usato anche per impostare il timeout di ripetizione dei tentativi (una volta raggiunto il numero massimo di tentativi, l'utente viene bloccato dal tentativo di ottenere nuovi codici fino alla scadenza di questo intervallo di tempo)
CodeLength NO Lunghezza del codice. Il valore predefinito è 6.
Set di caratteri NO Set di caratteri per il codice, formattato per l'uso in un'espressione regolare. Ad esempio: a-z0-9A-Z. Il valore predefinito è 0-9. Il set di caratteri deve includere almeno 10 caratteri diversi nel set specificato.
NumRetryAttempts NO Numero di tentativi di verifica prima che il codice sia considerato non valido. Il valore predefinito è 5. Ad esempio, se si imposta NumRetryAttempts su 2, verranno consentiti solo 2 tentativi in totale (first + 1 retry). Per il terzo tentativo, verrà generata un numero massimo di tentativi raggiunti indipendentemente dal fatto che il codice sia corretto o meno.
NumCodeGenerationAttempts NO Numero massimo di tentativi di generazione del codice per identificatore. Il valore predefinito è 10 se non specificato.
Riutilizza lo stesso codice NO Indica se lo stesso codice deve essere specificato anziché generare un nuovo codice quando il codice specificato non è scaduto ed è ancora valido. Il valore predefinito è false.

Esempio

L'esempio TechnicalProfile seguente viene usato per generare un codice:

<TechnicalProfile Id="GenerateCode">
  <DisplayName>Generate Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">GenerateCode</Item>
    <Item Key="CodeExpirationInSeconds">600</Item>
    <Item Key="CodeLength">6</Item>
    <Item Key="CharacterSet">0-9</Item>
    <Item Key="NumRetryAttempts">5</Item>
    <Item Key="NumCodeGenerationAttempts">10</Item>
    <Item Key="ReuseSameCode">false</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpGenerated" />
  </OutputClaims>
</TechnicalProfile>

Verifica il codice

La seconda modalità di questo profilo tecnico consiste nel verificare un codice. Di seguito sono riportate le opzioni che possono essere configurate per questa modalità.

Attestazioni di input

L'elemento InputClaims contiene un elenco di attestazioni necessarie per l'invio al provider di protocolli password monouso. È anche possibile eseguire il mapping del nome dell'attestazione al nome definito di seguito.

ClaimReferenceId Obbligatorio Descrizione
identificatore Identificatore per identificare l'utente che ha generato in precedenza un codice. Viene comunemente usato come identificatore della destinazione in cui viene recapitato il codice, ad esempio indirizzo di posta elettronica o numero di telefono.
otpToVerify Codice di verifica fornito dall'utente.

L'elemento InputClaimsTransformations può contenere una raccolta di elementi InputClaimsTransformation utilizzati per modificare le attestazioni di input o generarne di nuove prima di inviarle al provider di protocollo password monouso.

Attestazioni di output

Non sono disponibili attestazioni di output durante la verifica del codice di questo provider di protocolli.

L'elemento OutputClaimsTransformations può contenere una raccolta di elementi OutputClaimsTransformation che vengono usati per modificare le attestazioni di output o per generarne di nuove.

Metadati

È possibile usare le impostazioni seguenti per la modalità di verifica del codice:

Attributo Obbligatorio Descrizione
Operazione Operazione da eseguire. Valore possibile: VerifyCode.

Elementi dell'interfaccia utente

I metadati seguenti possono essere usati per configurare i messaggi di errore visualizzati in caso di errore di verifica del codice. I metadati devono essere configurati nel profilo tecnico autocertificato . I messaggi di errore possono essere localizzati.

Attributo Obbligatorio Descrizione
UserMessageIfSessionDoesNotExist NO Messaggio da visualizzare all'utente se la sessione di verifica del codice è scaduta. Il codice è scaduto o il codice non è mai stato generato per un identificatore specificato.
UserMessageIfMaxRetryAttempt NO Messaggio da visualizzare all'utente se ha superato il numero massimo di tentativi di verifica consentiti.
UserMessageIfMaxNumberOfCodeGenerated NO Messaggio da visualizzare all'utente se la generazione del codice ha superato il numero massimo consentito di tentativi.
UserMessageIfInvalidCode NO Messaggio da visualizzare all'utente se ha fornito un codice non valido.
UserMessageIfVerificationFailedRetryAllowed NO Messaggio da visualizzare all'utente se ha fornito un codice non valido e l'utente può fornire il codice corretto.
UserMessageIfSessionConflict NO Messaggio da visualizzare all'utente se il codice non può essere verificato.

Esempio

L'esempio TechnicalProfile seguente viene usato per verificare un codice:

<TechnicalProfile Id="VerifyCode">
  <DisplayName>Verify Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">VerifyCode</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
    <InputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpToVerify" />
  </InputClaims>
</TechnicalProfile>

Passaggi successivi

Vedere l'articolo seguente per esempio sull'uso di un profilo tecnico con password monouso con verifica della posta elettronica personalizzata:

  • Verifica personalizzata della posta elettronica in Azure Active Directory B2C (Mailjet, SendGrid)