Definire un profilo tecnico autocertificato nei criteri personalizzati di Azure Active Directory 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, vedere Introduzione ai criteri personalizzati in Active Directory B2C.

Tutte le interazioni in Azure Active Directory B2C (Azure AD B2C) in cui l'utente deve fornire l'input sono profili tecnici autocertificati. ad esempio una pagina di registrazione, una pagina di accesso o una pagina di reimpostazione della password.

Protocollo

L'attributo Nome dell'elemento Protocollo deve essere impostato su Proprietary. L'attributo handler deve contenere il nome completo dell'assembly del gestore di protocollo usato da Azure AD B2C per l'autocertificazione: Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

L'esempio seguente illustra un profilo tecnico autocertificato per l'iscrizione alla posta elettronica:

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

Attestazioni di input

In un profilo tecnico autocertifidato è possibile usare gli elementi InputClaims e InputClaimsTransformations per prepopopolare il valore delle attestazioni visualizzate nella pagina autocertificata (attestazioni di visualizzazione). Nei criteri del profilo di modifica ad esempio il percorso utente legge prima il profilo utente dal servizio directory di Azure AD B2C, quindi il profilo tecnico autocertificato imposta le attestazioni di input con i dati utente archiviati nel profilo utente. Queste attestazioni vengono raccolte dal profilo utente e successivamente presentate all'utente che può quindi modificare i dati esistenti.

<TechnicalProfile Id="SelfAsserted-ProfileUpdate">
...
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
    <InputClaim ClaimTypeReferenceId="givenName" />
    <InputClaim ClaimTypeReferenceId="surname" />
  </InputClaims>

Visualizzare le attestazioni

L'elemento DisplayClaims contiene un elenco di attestazioni da presentare sullo schermo per la raccolta di dati dall'utente. Per prepopopolare i valori delle attestazioni di visualizzazione, usare le attestazioni di input descritte in precedenza. L'elemento può contenere anche un valore predefinito.

L'ordine delle attestazioni in DisplayClaims specifica l'ordine in cui Azure AD B2C esegue il rendering delle attestazioni sullo schermo. Per forzare l'utente a fornire un valore per un'attestazione specifica, impostare l'attributo Required dell'elemento DisplayClaim su true.

L'elemento ClaimType nell'insieme DisplayClaims deve impostare l'elemento UserInputType su qualsiasi tipo di input utente supportato da Azure AD B2C. Ad esempio, TextBox o DropdownSingleSelect.

Aggiungere un riferimento a un oggetto DisplayControl

Nella raccolta di attestazioni di visualizzazione è possibile includere un riferimento a un displayControl creato. Un controllo di visualizzazione è un elemento dell'interfaccia utente con funzionalità speciali e interagisce con il servizio back-end di Azure AD B2C. Consente all'utente di eseguire azioni nella pagina che richiamano un profilo tecnico di convalida al back-end. Ad esempio, verificando un indirizzo di posta elettronica, un numero di telefono o un numero di fedeltà del cliente.

Nell'esempio TechnicalProfile seguente viene illustrato l'uso di attestazioni di visualizzazione con controlli di visualizzazione.

  • La prima attestazione di visualizzazione fa riferimento al emailVerificationControl controllo di visualizzazione, che raccoglie e verifica l'indirizzo di posta elettronica.
  • La seconda attestazione di visualizzazione fa riferimento al captchaChallengeControl controllo di visualizzazione, che genera e verifica il codice CAPTCHA.
  • La sesta attestazione di visualizzazione fa riferimento al phoneVerificationControl controllo di visualizzazione, che raccoglie e verifica un numero di telefono.
  • Le altre attestazioni di visualizzazione sono ClaimType da raccogliere dall'utente.
<TechnicalProfile Id="Id">
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="captchaChallengeControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
</TechnicalProfile>

Come accennato, un'attestazione di visualizzazione con un riferimento a un controllo display può eseguire la propria convalida, ad esempio verificando l'indirizzo di posta elettronica. Inoltre, la pagina autocertificata supporta l'uso di un profilo tecnico di convalida per convalidare l'intera pagina, incluso qualsiasi input utente (tipi di attestazione o controlli di visualizzazione), prima di passare al passaggio di orchestrazione successivo.

Combinare attentamente l'utilizzo delle attestazioni di visualizzazione e delle attestazioni di output

Se specifichi uno o più elementi DisplayClaim in un profilo tecnico autocertizionato, devi usare DisplayClaim per ogni attestazione che vuoi visualizzare sullo schermo e raccogliere dall'utente. Nessuna attestazione di output viene visualizzata da un profilo tecnico autocertificato che contiene almeno un'attestazione di visualizzazione.

Si consideri l'esempio seguente in cui un'attestazione age viene definita come attestazione di output in un criterio di base. Prima di aggiungere attestazioni di visualizzazione al profilo tecnico autocertificato, l'attestazione age viene visualizzata sullo schermo per la raccolta dati dell'utente:

<TechnicalProfile Id="id">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="age" />
  </OutputClaims>
</TechnicalProfile>

Se un criterio foglia che eredita tale base specifica officeNumber successivamente come attestazione di visualizzazione :

<TechnicalProfile Id="id">
  <DisplayClaims>
    <DisplayClaim ClaimTypeReferenceId="officeNumber" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="officeNumber" />
  </OutputClaims>
</TechnicalProfile>

L'attestazione age nei criteri di base non viene più presentata sullo schermo all'utente, ma è effettivamente "nascosta". Per visualizzare l'attestazione age e raccogliere il valore di età dall'utente, è necessario aggiungere un agedisplayClaim.

Attestazioni di output

L'elemento OutputClaims contiene un elenco di attestazioni da restituire al passaggio di orchestrazione successivo. L'attributo DefaultValue ha effetto solo se l'attestazione non è mai stata impostata. Se è stato impostato in un passaggio di orchestrazione precedente, il valore predefinito non diventa effettivo anche se l'utente lascia vuoto il valore. Per forzare l'utilizzo di un valore predefinito, impostare l'attributo AlwaysUseDefaultValue su true.

Per motivi di sicurezza, il valore dell'attestazione della password (UserInputType impostato su Password) è disponibile solo per i profili tecnici di convalida autocertificati del profilo tecnico. Non è possibile usare l'attestazione password nei passaggi di orchestrazione successivi.

Nota

Nelle versioni precedenti di Identity Experience Framework (IEF), le attestazioni di output sono state usate per raccogliere dati dall'utente. Per raccogliere dati dall'utente, usare invece una raccolta DisplayClaims .

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

Quando è consigliabile usare le attestazioni di output

In un profilo tecnico autocertitivo, la raccolta di attestazioni di output restituisce le attestazioni al passaggio di orchestrazione successivo.

Usare le attestazioni di output quando:

  • Le attestazioni vengono restituite dalla trasformazione delle attestazioni di output.
  • Impostazione di un valore predefinito in un'attestazione di output senza raccogliere dati dall'utente o restituire i dati dal profilo tecnico di convalida. Il profilo tecnico autocertificato LocalAccountSignUpWithLogonEmail imposta l'attestazione executed-SelfAsserted-Input su true.
  • Un profilo tecnico di convalida restituisce le attestazioni di output - Il profilo tecnico può chiamare un profilo tecnico di convalida che restituisce alcune attestazioni. È possibile che si desideri sviluppare le attestazioni e restituirle ai successivi passaggi dell'orchestrazione nel percorso utente. Quando si accede con un account locale, ad esempio, il profilo tecnico autocertificato denominato SelfAsserted-LocalAccountSignin-Email chiama il profilo tecnico di convalida denominato login-NonInteractive. Questo profilo tecnico convalida le credenziali utente e restituisce il profilo utente, ad esempio 'userPrincipalName', 'displayName', 'givenName' e 'surName'.
  • Un controllo di visualizzazione restituisce le attestazioni di output: il profilo tecnico potrebbe avere un riferimento a un controllo di visualizzazione. Il controllo display restituisce alcune attestazioni, ad esempio l'indirizzo di posta elettronica verificato. È possibile che si desideri sviluppare le attestazioni e restituirle ai successivi passaggi dell'orchestrazione nel percorso utente.

Nell'esempio seguente viene illustrato l'uso di un profilo tecnico autocertificato che usa attestazioni di visualizzazione e attestazioni di output.

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
    <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
    <Item Key="language.button_continue">Create</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="SecondaryEmailVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" Required="true" />
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" />
    <OutputClaim ClaimTypeReferenceId="newUser" />
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

Pagina di iscrizione o accesso delle attestazioni di output

In una pagina combinata di iscrizione e accesso, tenere presente quanto segue quando si usa un elemento DataUri definizione contenuto che specifica un unifiedssp tipo di pagina o unifiedssd :

  • Viene eseguito il rendering solo delle attestazioni di nome utente e password.
  • Le prime due attestazioni di output devono essere il nome utente e la password (in questo ordine).
  • Non viene eseguito il rendering di altre attestazioni; per queste attestazioni, è necessario impostare defaultValue o richiamare un profilo tecnico di convalida dei moduli attestazioni.

Rendere persistenti le attestazioni

L'elemento PersistedClaims non viene utilizzato. Il profilo tecnico autocertificato non rende persistenti i dati in Azure AD B2C. Viene invece eseguita una chiamata a un profilo tecnico di convalida che è responsabile della persistenza dei dati. I criteri di accesso ad esempio usano il profilo tecnico autocertificato LocalAccountSignUpWithLogonEmail per raccogliere il nuovo profilo utente. Il profilo tecnico LocalAccountSignUpWithLogonEmail chiama il profilo tecnico di convalida per creare l'account in Azure AD B2C.

Profili tecnici di convalida

Il profilo tecnico di convalida viene usato per convalidare alcune o tutte le attestazioni di output del profilo tecnico di riferimento. Le attestazioni di input del profilo tecnico di convalida devono apparire nelle attestazioni di output del profilo tecnico autocertificato. Il profilo tecnico di convalida esegue la convalida dell'input utente e può restituire un errore all'utente.

Il profilo tecnico di convalida può essere qualsiasi profilo tecnico nei criteri, ad esempio Microsoft Entra ID o profili tecnici dell'API REST. Nell'esempio precedente il profilo tecnico LocalAccountSignUpWithLogonEmail convalida che l'attributo signinName non esiste nella directory. In caso contrario, il profilo tecnico di convalida crea un account locale e restituisce il valore objectId, authenticationSource, newUser. Il profilo tecnico SelfAsserted-LocalAccountSignin-Email chiama il profilo tecnico di convalida login-NonInteractive per convalidare le credenziali utente.

È possibile anche chiamare un profilo tecnico di API REST usando la logica di business che si preferisce, sovrascrivere le attestazioni di input o arricchire i dati utente integrando ulteriormente con applicazioni line-of-business aziendali. Per altre informazioni, vedere Validation technical profile (Profilo tecnico di convalida)

Nota

Un profilo tecnico di convalida viene attivato solo quando è presente un input dell'utente. Non è possibile creare un profilo tecnico autocertivo vuoto per chiamare un profilo tecnico di convalida solo per sfruttare l'attributo ContinueOnError di un elemento ValidationTechnicalProfile . È possibile chiamare un profilo tecnico di convalida solo da un profilo tecnico autocertivo che richiede un input dall'utente o da un passaggio di orchestrazione in un percorso utente.

Metadati UFX

Attributo Richiesto Descrizione
setting.operatingMode 1 No Per una pagina di accesso, questa proprietà controlla il comportamento del campo del nome utente, ad esempio i messaggi di errore e di convalida di input. I valori previsti sono: Username o Email. Vedere la demo live di questi metadati.
AllowGenerationOfClaimsWithNullValues No Consentire di generare un'attestazione con valore Null. Ad esempio, nel caso in cui l'utente non selezioni una casella di controllo.
ContentDefinitionReferenceId Identificatore della definizione di contenuto associata a questo profilo tecnico.
EnforceEmailVerification No Per la registrazione o la modifica del profilo, applica la verifica tramite posta elettronica. I valori possibili sono: true (impostazione predefinita) o false.
setting.retryLimit No Controlla il numero di volte in cui un utente può provare a specificare i dati che vengono controllati rispetto a un profilo tecnico di convalida. Ad esempio, un utente tenta di iscriversi con un account già esistente e continua a provare fino al raggiungimento del limite. Vedere la demo live di questi metadati.
SignUpTarget 1 No Identificatore di scambio di destinazione di iscrizione. Quando l'utente fa clic sul pulsante di iscrizione, Azure AD B2C esegue l'identificatore di scambio specificato.
setting.showCancelButton No Visualizza il pulsante Annulla. I valori possibili sono: true (impostazione predefinita) o false. Vedere la demo live di questi metadati.
setting.showContinueButton No Visualizza il pulsante Continua. I valori possibili sono: true (impostazione predefinita) o false. Vedere la demo live di questi metadati.
setting.showSignupLink 2 No Visualizza il pulsante di iscrizione. I valori possibili sono: true (impostazione predefinita) o false. Vedere la demo live di questi metadati.
setting.forgotPasswordLinkLocation 2 No Visualizza il collegamento password dimenticato. Valori possibili: AfterLabel (impostazione predefinita) visualizza il collegamento direttamente dopo l'etichetta o dopo il campo di input della password quando non è presente alcuna etichetta, AfterInput visualizza il collegamento dopo il campo di input della password, AfterButtons visualizza il collegamento nella parte inferiore del modulo dopo i pulsanti o None rimuove il collegamento password dimenticato. Vedere la demo live di questi metadati.
setting.enableRememberMe 2 No Visualizza la casella di controllo Mantieni l'accesso. Valori possibili: true o false (impostazione predefinita). Demo live di questi metadati.
setting.inputVerificationDelayTimeInMilliseconds 3 No Migliora l'esperienza utente, attendendo che l'utente interrompa la digitazione e quindi convalida il valore. Valore predefinito 2000 millisecondi. Vedere la demo live di questi metadati.
IncludeClaimResolvingInClaimsHandling No Per le attestazioni di input e output, specifica se la risoluzione delle attestazioni è inclusa nel profilo tecnico. Valori possibili: true o false (impostazione predefinita). Se si vuole usare un resolver di attestazioni nel profilo tecnico, impostarlo su true.
setting.forgotPasswordLinkOverride 4 No Scambio di attestazioni di reimpostazione della password da eseguire. Per altre informazioni, vedere Reimpostazione della password self-service.
setting.enableCaptchaChallenge No Specifica se deve essere visualizzato il codice di verifica CAPTCHA. Valori possibili: true o false (impostazione predefinita). Per il funzionamento di questa impostazione, è necessario fare riferimento al controllo di visualizzazione CAPTCHA nelle attestazioni di visualizzazione del profilo tecnico autocertificato. La funzionalità CAPTCHA è disponibile in anteprima pubblica.

Note:

  1. Disponibile per la definizione del contenuto Tipo DataUri di unifiedsspo unifiedssd.
  2. Disponibile per la definizione del contenuto Tipo DataUri di unifiedsspo unifiedssd. Layout di pagina versione 1.1.0 e successive.
  3. Disponibile per il layout di pagina versione 1.2.0 e successive.
  4. Disponibile per la definizione del contenuto Tipo DataUri di unifiedssp. Layout di pagina versione 2.1.2 e successive.

Chiavi crittografiche

L'elemento CryptographicKeys non viene usato.