Condividi tramite


Configurare un flusso di reimpostazione della password in Azure Active Directory 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.

Prima di iniziare, utilizza il selettore Scegli un tipo di criterio nella parte superiore di questa pagina per scegliere il tipo di criterio che si sta configurando. Azure Active Directory B2C offre due metodi per definire il modo in cui gli utenti interagiscono con le applicazioni: tramite flussi utente predefiniti o tramite criteri personalizzati completamente configurabili. I passaggi necessari in questo articolo sono diversi per ogni metodo.

In un percorso di iscrizione e accesso, un utente può reimpostare la propria password usando il collegamento Password dimenticata? Questo flusso di reimpostazione della password self-service si applica agli account locali in Azure Active Directory B2C (Azure AD B2C) che usano un indirizzo di posta elettronica o un nome utente con una password per l'accesso.

Suggerimento

Un utente può modificare la password usando il flusso di reimpostazione della password self-service se dimentica la password e vuole reimpostarla. È anche possibile scegliere una delle opzioni del flusso utente seguenti per modificare la password di un utente:

  • Se un utente conosce la password e vuole modificarla, usare un flusso di modifica della password.
  • Se si vuole forzare un utente a reimpostare la password( ad esempio, quando accede per la prima volta, quando le password sono state reimpostate da un amministratore o dopo la migrazione ad Azure AD B2C con password casuali), usare un flusso di reimpostazione della password forzata .

Il flusso di reimpostazione della password prevede i passaggi seguenti:

  1. Nella pagina di iscrizione e accesso l'utente seleziona il collegamento Password dimenticata? Azure AD B2C avvia il flusso di reimpostazione della password.
  2. Nella finestra di dialogo successiva visualizzata, l'utente immette il proprio indirizzo di posta elettronica e quindi seleziona Invia codice di verifica. Azure AD B2C invia un codice di verifica all'account di posta elettronica dell'utente. L'utente copia il codice di verifica dal messaggio di posta elettronica, immette il codice nella finestra di dialogo di reimpostazione della password di Azure AD B2C e quindi seleziona Verifica codice.
  3. L'utente può quindi immettere una nuova password. Dopo aver verificato il messaggio di posta elettronica, l'utente può comunque selezionare il pulsante Cambia messaggio di posta elettronica . Se si desidera rimuoverlo, vedere Nascondere il pulsante cambia messaggio di posta elettronica .

Diagramma che mostra tre dialoghi nel flusso di reimpostazione della password.

Il nome predefinito del pulsante Cambia messaggio di posta elettronica in selfAsserted.html è changeclaims. Per trovare il nome del pulsante, nella pagina di iscrizione esaminare l'origine della pagina usando uno strumento del browser, ad esempio Inspect.

Prerequisiti

  • Gli utenti B2C devono avere un metodo di autenticazione specificato per la reimpostazione della password self-service. Selezionare l'utente B2C, nel menu a sinistra in Gestisci selezionare Metodi di autenticazione. Verificare che le informazioni di contatto di autenticazione siano impostate . Gli utenti B2C creati tramite un flusso di iscrizione hanno questa impostazione per impostazione predefinita. Per gli utenti creati tramite il portale di Azure o l'API Graph, è necessario impostare le informazioni di contatto di autenticazione per il funzionamento della reimpostazione della password self-service.

La nuova esperienza di reimpostazione della password fa ora parte dei criteri di iscrizione o di accesso. Quando l'utente seleziona il collegamento Password dimenticata? viene inviato immediatamente all'esperienza Password dimenticata. L'applicazione non deve più gestire il codice di errore AADB2C90118 e non è necessario un criterio separato per la reimpostazione della password.

L'esperienza di reimpostazione della password self-service può essere configurata per i flussi utente di accesso (scelta consigliata) o iscrizione e accesso (scelta consigliata). Se non si ha una di queste impostazioni per i flussi utente, creare un flusso utente di iscrizione o di accesso .

Per configurare la reimpostazione della password self-service per il flusso utente di iscrizione o accesso:

  1. Accedi al portale di Azure.
  2. Se si dispone dell'accesso a più tenant, selezionare l'icona Impostazioni nel menu superiore per passare al tenant di Azure AD B2C dal menu Directory + sottoscrizioni.
  3. Nel portale di Azure cercare e selezionare Azure AD B2C.
  4. Selezionare Flussi utente.
  5. Selezionare un flusso utente di iscrizione o di accesso (di tipo Consigliato) che si vuole personalizzare.
  6. Nel menu in Impostazioni selezionare Proprietà.
  7. In Configurazione password selezionare Reimpostazione password self-service.
  8. Seleziona Salva.
  9. Nel menu a sinistra sotto Personalizza, seleziona Layout di pagina.
  10. In Versione layout di pagina selezionare 2.1.3 o versione successiva.
  11. Seleziona Salva.

Le sezioni seguenti descrivono come aggiungere un'esperienza password self-service a un criterio personalizzato. L'esempio si basa sui file di criteri inclusi nel pacchetto di avvio dei criteri personalizzato.

Suggerimento

È possibile trovare un esempio completo dei criteri di iscrizione e accesso con reimpostazione della password in GitHub.

Per indicare al criterio che un utente ha selezionato il collegamento Password dimenticata? definire un'attestazione booleana. Usare l'attestazione per indirizzare il percorso utente al profilo tecnico Password dimenticata. L'attestazione può anche essere rilasciata al token, in modo che l'applicazione rilevi che l'utente ha eseguito l'accesso usando il flusso utente Password dimenticata.

Dichiara le richieste nello schema delle richieste. Aprire il file delle estensioni dei criteri, ad esempio in SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Cercare l'elemento BuildingBlocks. Se l'elemento non esiste, aggiungerlo.

  2. Individuare l'elemento ClaimsSchema . Se l'elemento non esiste, aggiungerlo.

  3. Aggiungere l'attestazione seguente all'elemento ClaimsSchema .

    <!-- 
    <BuildingBlocks>
      <ClaimsSchema> -->
        <ClaimType Id="isForgotPassword">
          <DisplayName>isForgotPassword</DisplayName>
          <DataType>boolean</DataType>
          <AdminHelpText>Whether the user has selected Forgot your Password</AdminHelpText>
        </ClaimType>
      <!--
      </ClaimsSchema>
    </BuildingBlocks> -->
    

Aggiornare la versione del layout di pagina

La versione del layout di pagina 2.1.2 è necessaria per abilitare il flusso di reimpostazione della password self-service nel percorso di iscrizione o accesso. Per aggiornare la versione del layout di pagina:

  1. Aprire il file di base dei criteri, ad esempio SocialAndLocalAccounts/TrustFrameworkBase.xml.

  2. Cercare l'elemento BuildingBlocks. Se l'elemento non esiste, aggiungerlo.

  3. Individuare l'elemento ContentDefinitions . Se l'elemento non esiste, aggiungerlo.

  4. Modificare l'elemento DataURI all'interno dell'elemento ContentDefinition in modo che abbia l'ID api.signuporsignin:

    <!-- 
    <BuildingBlocks>
      <ContentDefinitions> -->
        <ContentDefinition Id="api.signuporsignin">
          <DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.2</DataUri>
        </ContentDefinition>
      <!-- 
      </ContentDefinitions>
    </BuildingBlocks> -->
    

Aggiungere i profili tecnici

Un profilo tecnico di trasformazione delle dichiarazioni accede al claim isForgotPassword. Il profilo tecnico è citato in un secondo momento. Quando viene richiamato, imposta il valore dell'attestazione isForgotPassword su true.

  1. Aprire il file delle estensioni dei criteri, ad esempio in SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Trovare l'elemento ClaimsProviders (se l'elemento non esiste, crearlo) e quindi aggiungere il provider di attestazioni seguente:
<!-- 
<ClaimsProviders> -->
  <ClaimsProvider>
    <DisplayName>Local Account</DisplayName>
    <TechnicalProfiles>
      <TechnicalProfile Id="ForgotPassword">
        <DisplayName>Forgot your password?</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="isForgotPassword" DefaultValue="true" AlwaysUseDefaultValue="true"/>
        </OutputClaims>
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
      </TechnicalProfile>
      <TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
        <Metadata>
          <Item Key="setting.forgotPasswordLinkOverride">ForgotPasswordExchange</Item>
        </Metadata>
      </TechnicalProfile>
      <TechnicalProfile Id="LocalAccountWritePasswordUsingObjectId">
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
      </TechnicalProfile>
    </TechnicalProfiles>
  </ClaimsProvider>
<!-- 
</ClaimsProviders> -->

L'impostazione setting.forgotPasswordLinkOverride del profilo tecnico SelfAsserted-LocalAccountSignin-Email definisce lo scambio di attestazioni di reimpostazione della password eseguito nel percorso utente.

Il profilo tecnico LocalAccountWritePasswordUsingObjectId ed il gestore di sessione UseTechnicalProfileForSessionManagementSM-AAD sono necessari affinché l'utente esegua correttamente i successivi accessi già in condizioni di SSO.

Aggiungere il percorso secondario di reimpostazione della password

L'utente può ora accedere, iscriversi ed eseguire la reimpostazione della password nel percorso utente. Per organizzare meglio il percorso utente, è possibile usare un sottopercorso per gestire il flusso di reimpostazione della password.

Il percorso secondario viene chiamato dal percorso utente ed esegue i passaggi specifici che forniscono l'esperienza di reimpostazione della password all'utente. Usare il tipo di percorso secondario Call in modo che, al termine del percorso secondario, il controllo venga restituito al passaggio di orchestrazione che ha avviato il percorso secondario.

  1. Aprire il file delle estensioni dei criteri, ad esempio SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Trovare l'elemento SubJourneys . Se l'elemento non esiste, aggiungerlo dopo l'elemento Percorsi utente . Aggiungere quindi il sottopercorso seguente:
<!--
<SubJourneys>-->
  <SubJourney Id="PasswordReset" Type="Call">
    <OrchestrationSteps>
      <!-- Validate user's email address. -->
      <OrchestrationStep Order="1" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="PasswordResetUsingEmailAddressExchange" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingEmailAddress" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- Collect and persist a new password. -->
      <OrchestrationStep Order="2" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="NewCredentials" TechnicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" />
        </ClaimsExchanges>
      </OrchestrationStep>
    </OrchestrationSteps>
  </SubJourney>
<!--
</SubJourneys>-->

Preparare il percorso utente

Successivamente, per connettere il collegamento Password dimenticata? al percorso secondario Password dimenticata è necessario fare riferimento all'ID del percorso secondario Password dimenticata nell'elemento ClaimsProviderSelection del passaggio CombinedSignInAndSignUp .

Se non si ha un percorso utente personalizzato con un passaggio CombinedSignInAndSignUp , completare la procedura seguente per duplicare un percorso utente di iscrizione o di accesso esistente. In caso contrario, continuare con la sezione successiva.

  1. Nel pacchetto di avvio aprire il file diTrustFrameworkBase.xml , ad esempio SocialAndLocalAccounts/TrustFrameworkBase.xml.
  2. Trovare e copiare l'intero contenuto dell'elemento UserJourney che include Id="SignUpOrSignIn".
  3. Aprire TrustFrameworkExtensions.xml file, ad esempio SocialAndLocalAccounts/TrustFrameworkExtensions.xmle trovare l'elemento UserJourneys . Se l'elemento non esiste, crearlo.
  4. Creare un elemento figlio dell'elemento UserJourneys incollando l'intero contenuto dell'elemento UserJourney copiato nel passaggio 2.
  5. Rinominare l'ID del percorso utente. Ad esempio: Id="CustomSignUpSignIn".

Nel percorso utente è possibile rappresentare il percorso secondario Password dimenticata come ClaimsProviderSelection. Aggiungendo questo elemento, si connette il collegamento Password dimenticata? al percorso secondario Password dimenticata.

  1. Aprire il file TrustFrameworkExtensions.xml , ad esempio SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Nel percorso utente trovare l'elemento del passaggio di orchestrazione che include Type="CombinedSignInAndSignUp" o Type="ClaimsProviderSelection". In genere è il primo passaggio di orchestrazione. L'elemento ClaimsProviderSelections contiene un elenco di provider di identità che un utente può usare per accedere. Aggiungere la riga seguente:

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  3. Nel passaggio di orchestrazione successivo aggiungere un elemento ClaimsExchange aggiungendo la riga seguente:

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  4. Aggiungere il passaggio di orchestrazione seguente tra il passaggio corrente e il passaggio successivo. Il nuovo passaggio di orchestrazione aggiunto verifica se l'attestazione isForgotPassword esiste. Se l'attestazione esiste, richiama il sub journey di reimpostazione della password.

    <OrchestrationStep Order="3" Type="InvokeSubJourney">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
          <Value>isForgotPassword</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <JourneyList>
        <Candidate SubJourneyReferenceId="PasswordReset" />
      </JourneyList>
    </OrchestrationStep>
    
  5. Dopo avere aggiunto il nuovo passaggio di orchestrazione, rinumerare i passaggi in sequenza senza ignorare alcun numero intero, da 1 a N.

Impostare il percorso utente da eseguire

Dopo aver modificato o creato un percorso utente, nella sezione Relying Party specificare il percorso che Azure AD B2C eseguirà per questo criterio personalizzato.

  1. Aprire il file con l'elemento Relying Party , ad esempio SocialAndLocalAccounts/SignUpOrSignin.xml.

  2. Nell'elemento RelyingParty trovare l'elemento DefaultUserJourney .

  3. Aggiornare DefaultUserJourney ReferenceId in modo che corrisponda all'ID del percorso utente in cui è stato aggiunto ClaimsProviderSelections.

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Indicare il flusso Password dimenticata all'app

L'applicazione potrebbe dover rilevare se l'utente ha eseguito l'accesso usando il flusso utente Password dimenticata. L'attestazione isForgotPassword contiene un valore booleano che indica che l'operazione è stata eseguita. L'attestazione può essere rilasciata nel token inviato all'applicazione. Se necessario, aggiungere isForgotPassword alle attestazioni di output nella sezione Relying Party . L'applicazione può controllare l'attestazione isForgotPassword per determinare se l'utente reimposta la password.

<RelyingParty>
  <OutputClaims>
    ...
    <OutputClaim ClaimTypeReferenceId="isForgotPassword" DefaultValue="false" />
  </OutputClaims>
</RelyingParty>

Caricare i criteri personalizzati

  1. Accedi al portale di Azure.
  2. Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant di Azure AD B2C dal menu Directory e sottoscrizioni .
  3. Nel portale di Azure cercare e selezionare Azure AD B2C.
  4. Nel menu in Criteri selezionare Identity Experience Framework.
  5. Selezionare Carica criteri personalizzati. Nell'ordine seguente caricare i file dei criteri modificati:
    1. Il file di base dei criteri, ad esempio TrustFrameworkBase.xml.
    2. La politica di estensione, ad esempio TrustFrameworkExtensions.xml.
    3. I criteri della relying party, ad esempio, SignUpSignIn.xml.

Nascondi il pulsante cambia messaggio di posta elettronica (facoltativo)

Dopo aver verificato il messaggio di posta elettronica, l'utente può comunque selezionare Cambia messaggio di posta elettronica, immettere un altro indirizzo di posta elettronica e quindi ripetere la verifica della posta elettronica. Se si preferisce nascondere il pulsante Cambia messaggio di posta elettronica , è possibile modificare il codice CSS per nascondere gli elementi HTML associati nella finestra di dialogo. Ad esempio, è possibile aggiungere la voce CSS seguente a selfAsserted.html e personalizzare l'interfaccia utente usando i modelli HTML:

<style type="text/css">
   .changeClaims
   {
     visibility: hidden;
   }
</style>

Testare il flusso di reimpostazione della password

  1. Selezionare un flusso utente di iscrizione o di accesso (tipo consigliato) da testare.
  2. Seleziona Esegui il flusso utente.
  3. In Applicazione selezionare l'applicazione Web denominata webapp1 registrata in precedenza. L'URL di risposta dovrebbe mostrare https://jwt.ms.
  4. Seleziona Esegui il flusso utente.
  5. Nella pagina di iscrizione o accesso selezionare Dimenticato la password?
  6. Verificare l'indirizzo di posta elettronica dell'account creato in precedenza e quindi selezionare Continua.
  7. Nella finestra di dialogo visualizzata modificare la password per l'utente e quindi selezionare Continua. Il token viene restituito a https://jwt.ms e il browser lo visualizza.
  8. Controllare il valore dell'attestazione isForgotPassword del token restituito. Se esiste e è impostato su true, l'utente ha reimpostato la password.

Criteri di reimpostazione della password (legacy)

Se l'esperienza di reimpostazione della password self-service non è abilitata, la selezione di questo collegamento non attiva automaticamente un flusso utente di reimpostazione della password. Al contrario, il codice AADB2C90118 di errore viene restituito all'applicazione. L'applicazione deve gestire questo codice di errore reinizializzando la libreria di autenticazione per autenticare un flusso utente di reimpostazione della password di Azure AD B2C.

Il diagramma seguente illustra il processo:

  1. Nell'applicazione l'utente seleziona Accedi. L'app avvia una richiesta di autorizzazione e reindirizza ad Azure AD B2C in modo che l'utente possa completare l'accesso. La richiesta di autorizzazione specifica un nome di criteri di iscrizione o accesso, ad esempio B2C_1_signup_signin.
  2. L'utente seleziona il collegamento Password dimenticata? Azure AD B2C restituisce il AADB2C90118 codice di errore all'applicazione.
  3. L'applicazione gestisce il codice di errore e avvia una nuova richiesta di autorizzazione. La richiesta di autorizzazione specifica il nome del criterio di reimpostazione della password, ad esempio B2C_1_pwd_reset.

Diagramma che mostra il flusso utente di reimpostazione della password legacy con i passaggi numerati.

È possibile visualizzare una dimostrazione di base del collegamento dei flussi utente nell'esempio di ASP.NET.

Creare un flusso utente di reimpostazione della password

Per consentire agli utenti dell'applicazione di reimpostare le password, creare un flusso utente di reimpostazione della password:

  1. Nel portale di Azure passare alla panoramica del tenant di Azure AD B2C.
  2. Nel menu a sinistra in Criteri selezionare Flussi utente e quindi nuovo flusso utente.
  3. In Crea un flusso utente selezionare il flusso utente di reimpostazione della password .
  4. Sotto Seleziona una versione, seleziona Consigliato, e quindi Crea.
  5. In Nome immettere un nome per il flusso utente. Ad esempio, passwordreset1.
  6. Per Provider di identità, abilitare Reimposta password usando nome utente o Reimposta password usando l'indirizzo di posta elettronica.
  7. In Autenticazione a più fattori, se si vuole richiedere agli utenti di verificare le identità usando un secondo metodo di autenticazione, selezionare il tipo di metodo e quando applicare l'autenticazione a più fattori. Ulteriori informazioni.
  8. In Accesso condizionale, se sono stati configurati criteri di accesso condizionale per il tenant di Azure AD B2C e si vuole usarli in questo flusso utente, selezionare la casella di controllo Imponi criteri di accesso condizionale . Non è necessario specificare un nome di politica. Ulteriori informazioni.
  9. In Attestazioni applicazione selezionare Mostra altro. Scegli le attestazioni che desideri restituire nei token di autorizzazione inviati alla tua applicazione. Ad esempio, selezionare ID oggetto dell'utente.
  10. Seleziona OK.
  11. Selezionare Crea per aggiungere il flusso utente. Al nome viene aggiunto automaticamente un prefisso di B2C_1 .

Testare il flusso utente

Per testare il flusso utente:

  1. Selezionare il flusso utente creato. Nella pagina di panoramica del flusso utente selezionare Esegui flusso utente.
  2. In Applicazione selezionare l'applicazione Web da testare, ad esempio quella denominata webapp1 , se è stata registrata in precedenza. L'URL di risposta deve essere https://jwt.ms.
  3. Selezionare Esegui flusso utente, verificare l'indirizzo di posta elettronica dell'account per cui si vuole reimpostare la password e quindi selezionare Continua.
  4. Modificare la password e quindi selezionare Continua. Il token viene restituito a https://jwt.ms e il browser lo visualizza.

Creare un criterio di reimpostazione della password

I criteri personalizzati sono un set di file XML caricati nel tenant di Azure AD B2C per definire i percorsi utente. Sono disponibili pacchetti di base con diversi criteri predefiniti, tra cui iscrizione e accesso, reimpostazione della password e criteri di modifica dei profili. Per altre informazioni, vedere Introduzione ai criteri personalizzati in Azure AD B2C.

Risolvere i problemi relativi ai flussi utente di Azure AD B2C e ai criteri personalizzati

L'applicazione deve gestire determinati errori provenienti dal servizio Azure B2C. Informazioni su come risolvere i problemi relativi ai flussi utente e ai criteri personalizzati di Azure AD B2C.

Configurare una reimpostazione forzata della password.

Iscrizione e accesso con reimpostazione della password incorporata.