Configurare un flusso di reimpostazione della password in Azure Active Directory B2C

Prima di iniziare, usare il selettore Scegli un tipo di criterio 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.

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 la verifica del messaggio di posta elettronica, l'utente può comunque selezionare Modificare il pulsante di posta elettronica. Vedere Nascondere il pulsante cambia messaggio di posta elettronica.

Diagram that shows three dialogs in the password reset flow.

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 di flusso utente seguenti:

  • 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 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

Nascondi il pulsante cambia messaggio di posta elettronica

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>

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 uno di questi flussi utente non è configurato, creare un flusso utente di iscrizione o 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 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. 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 in Personalizza selezionare 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.

Dichiarare le attestazioni nello schema delle attestazioni. 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

Il layout di pagina versione 2.1.2 è necessario 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 attestazioni accede all'attestazione isForgotPassword . Il profilo tecnico viene fatto riferimento 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 del profilo tecnico SelfAsserted-LocalAccountSignin-Email.forgotPasswordLinkOverride definisce lo scambio di attestazioni di reimpostazione della password eseguito nel percorso utente.

Il profilo tecnico LocalAccountWritePasswordUsingObjectId UseTechnicalProfileForSessionManagementSM-AAD per consentire all'utente di preformulare gli account di accesso successivi correttamente in condizioni 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 Call percorso secondario del tipo 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 TrustFrameworkBase.xml , ad esempio SocialAndLocalAccounts/TrustFrameworkBase.xml.
  2. Trovare e copiare l'intero contenuto dell'elemento UserJourney che include Id="SignUpOrSignIn".
  3. Aprire il file TrustFrameworkExtensions.xml , ad esempio SocialAndLocalAccounts/TrustFrameworkExtensions.xml e 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 aver aggiunto il nuovo passaggio di orchestrazione, numerare i passaggi in sequenza senza ignorare numeri interi 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 il criterio 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 Framework dell'esperienza di gestione delle identità.
  5. Selezionare Carica criteri personalizzati. Nell'ordine seguente caricare i file dei criteri modificati:
    1. File di base dei criteri, ad esempio TrustFrameworkBase.xml.
    2. Criteri di estensione, ad esempio TrustFrameworkExtensions.xml.
    3. Criteri della relying party, ad esempio SignUpSignIn.xml.

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 password self-service non è abilitata, la selezione di questo collegamento non attiva automaticamente un flusso utente di reimpostazione della password. Viene invece restituito il codice di errore AADB2C90118 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.

    Diagram that shows the legacy password reset user flow.

È possibile visualizzare un esempio di ASP.NET di base, che illustra il collegamento ai flussi utente.

Creare un flusso utente di reimpostazione delle password

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

  1. Nella 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. In Selezionare una versioneselezionare Consigliata, quindi selezionare 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 criterio. Ulteriori informazioni.
  9. In Attestazioni applicazione selezionare Mostra altro. Scegliere le attestazioni che si desidera restituire nei token di autorizzazione inviati all'applicazione. Selezionare ad esempio 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 Panoramica del flusso utente, selezionare Esegui il 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 i criteri di reimpostazione delle 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 l'iscrizione e l'accesso, la reimpostazione della password e i 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.

Passaggi successivi

Configurare una reimpostazione forzata della password.

Iscrizione e accesso con reimpostazione della password incorporata.