Definire un profilo tecnico della password one-time in un criterio personalizzato di Azure AD B2C
Nota
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, informazioni sul pacchetto di avvio dei criteri personalizzati in 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 una sola volta. Usare un profilo tecnico per generare un codice e quindi verificare il codice in un secondo momento.
Il profilo tecnico della password one-time può anche restituire un messaggio di errore durante la verifica del codice. Progettare l'integrazione con la password one-time usando un profilo tecnico di convalida. Un profilo tecnico di convalida chiama il profilo tecnico della password one-time per verificare un codice. Il profilo tecnico di convalida consente la convalida i dati specificati dall'utente prima che il percorso utente proceda. Con il profilo tecnico di convalida, viene visualizzato un messaggio di errore in una pagina self-asserted.
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 del protocollo usato da Azure AD B2C:
Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Nell'esempio seguente viene illustrato un profilo tecnico della password one-time:
<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" />
...
Generare il 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 one-time. È anche possibile eseguire il mapping del nome dell'attestazione al nome definito di seguito.
ClaimReferenceId | Obbligatoria | Descrizione |
---|---|---|
identificatore | Sì | 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 usati per modificare le attestazioni di input o generare nuovi elementi prima di inviare al provider di protocolli password one-time.
Attestazioni di output
L'elemento OutputClaims contiene un elenco di attestazioni generate dal provider di protocolli password one-time. È anche possibile eseguire il mapping del nome dell'attestazione al nome definito di seguito.
ClaimReferenceId | Obbligatoria | Descrizione |
---|---|---|
otpGenerated | Sì | 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
Le impostazioni seguenti possono essere usate per configurare la modalità di generazione del codice:
Attributo | Obbligatoria | Descrizione |
---|---|---|
Operazione | Sì | L'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 (lo stesso codice usando ReuseSameCode o un nuovo codice), la scadenza del codice viene estesa. Questa volta viene usato anche per impostare il timeout dei tentativi (una volta raggiunto un massimo di tentativi, l'utente viene bloccato dal tentativo di ottenere nuovi codici fino alla scadenza di questa ora) |
CodeLength | No | Lunghezza del codice. Il valore predefinito è 6 . |
CharacterSet | No | Il 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, sarà possibile eseguire solo 2 tentativi in totale (primo + 1 tentativo). Per il 3° tentativo genererà il numero massimo di tentativi raggiunto indipendentemente dal fatto che il codice sia corretto o meno. |
NumCodeGenerationAttempts | No | Numero di tentativi di generazione di codice massimi per identificatore. Il valore predefinito è 10 se non specificato. |
RiusSameCode | No | 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 one-time. È anche possibile eseguire il mapping del nome dell'attestazione al nome definito di seguito.
ClaimReferenceId | Obbligatoria | Descrizione |
---|---|---|
identificatore | Sì | 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 | Sì | 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 del 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
Per codificare la modalità di verifica, è possibile usare le impostazioni seguenti:
Attributo | Obbligatoria | Descrizione |
---|---|---|
Operazione | Sì | L'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 | Obbligatoria | 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. |
UserMessageIfMaxRetryAttempted | 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: