Partager via


Configurer un flux de réinitialisation de mot de passe dans Azure Active Directory B2C

Important

À compter du 1er mai 2025, Azure AD B2C ne sera plus disponible pour les nouveaux clients. Pour plus d’informations, consultez notre FAQ.

Avant de commencer, utilisez le sélecteur Choisir un type de stratégie en haut de cette page pour choisir le type de stratégie que vous configurez. Azure Active Directory B2C offre deux possibilités pour définir la façon dont les utilisateurs interagissent avec vos applications : via des flux utilisateurs prédéfinis ou via des stratégies personnalisées entièrement configurables. La procédure donnée dans cet article est différente pour chaque méthode.

Dans un parcours d’inscription et de connexion, un utilisateur peut réinitialiser son propre mot de passe à l’aide du lien Forgot your password ? Ce flux de réinitialisation de mot de passe en libre-service s’applique aux comptes locaux dans Azure Active Directory B2C (Azure AD B2C) qui utilisent une adresse e-mail ou un nom d’utilisateur avec un mot de passe pour la connexion.

Conseil / Astuce

Un utilisateur peut modifier son mot de passe à l’aide du flux de réinitialisation de mot de passe libre-service s’il oublie son mot de passe et souhaite le réinitialiser. Vous pouvez également choisir l’une des options de flux utilisateur suivantes pour modifier le mot de passe d’un utilisateur :

  • Si un utilisateur connaît son mot de passe et souhaite le modifier, utilisez un flux de modification de mot de passe.
  • Si vous souhaitez forcer un utilisateur à réinitialiser son mot de passe (par exemple, lorsqu’il se connecte pour la première fois, quand ses mots de passe ont été réinitialisés par un administrateur ou après avoir été migré vers Azure AD B2C avec des mots de passe aléatoires), utilisez un flux de réinitialisation de mot de passe forcé .

Le flux de réinitialisation de mot de passe implique les étapes suivantes :

  1. Dans la page d’inscription et de connexion, l’utilisateur sélectionne le lien Forgot your password ? Azure AD B2C lance le flux de réinitialisation de mot de passe.
  2. Dans la boîte de dialogue suivante qui s’affiche, l’utilisateur entre son adresse e-mail, puis sélectionne Envoyer le code de vérification. Azure AD B2C envoie un code de vérification au compte de messagerie de l’utilisateur. L’utilisateur copie le code de vérification à partir de l’e-mail, entre le code dans la boîte de dialogue de réinitialisation du mot de passe Azure AD B2C, puis sélectionne Vérifier le code.
  3. L’utilisateur peut ensuite entrer un nouveau mot de passe. (Une fois l’e-mail vérifié, l’utilisateur peut toujours sélectionner le bouton Modifier l’e-mail ; voir Masquer le bouton Modifier l’e-mail si vous souhaitez le supprimer.)

Diagramme montrant trois boîtes de dialogue dans le flux de réinitialisation de mot de passe.

Le nom par défaut du bouton Modifier l’e-mail dans selfAsserted.html est changeclaims. Pour rechercher le nom du bouton, dans la page d’inscription, inspectez la source de la page à l’aide d’un outil de navigateur tel que Inspect.

Conditions préalables

  • Les utilisateurs B2C doivent avoir une méthode d’authentification spécifiée pour la réinitialisation de mot de passe en libre-service. Sélectionnez l’utilisateur B2C, dans le menu de gauche sous Gérer, sélectionnez Méthodes d’authentification. Vérifiez que les informations de contact d’authentification sont définies. Les utilisateurs B2C créés par le biais d’un flux d’inscription ont ce paramètre défini par défaut. Pour les utilisateurs créés via le portail Azure ou l’API Graph, vous devez définir les informations de contact d’authentification pour que SSPR fonctionne.

La nouvelle expérience de réinitialisation de mot de passe fait désormais partie de la stratégie d’inscription ou de connexion. Lorsque l’utilisateur sélectionne le lien Forgot your password ? (Mot de passe oublié), il est immédiatement envoyé à l’expérience mot de passe oubliée. Votre application n’a plus besoin de gérer le code d’erreur AADB2C90118 et vous n’avez pas besoin d’une stratégie distincte pour la réinitialisation du mot de passe.

L’expérience de réinitialisation de mot de passe en libre-service peut être configurée pour les flux utilisateur de connexion (recommandé) ou d’inscription et de connexion (recommandé). Si vous n’avez pas configuré l’un de ces flux d’utilisateurs, créez un flux d’utilisateur d’inscription ou de connexion.

Pour configurer la réinitialisation de mot de passe en libre-service pour le processus d'inscription ou de connexion utilisateur :

  1. Connectez-vous au portail Azure.
  2. Si vous avez accès à plusieurs tenants (locataires), sélectionnez l’icône Paramètres dans le menu supérieur pour basculer vers votre tenant Azure AD B2C à partir du menu Annuaires + abonnements.
  3. Dans le portail Azure, recherchez et sélectionnez Azure AD B2C.
  4. Sélectionnez Flux utilisateur.
  5. Sélectionnez un flux d’utilisateur d’inscription ou de connexion (de type Recommandé) que vous souhaitez personnaliser.
  6. Dans le menu sous Paramètres, sélectionnez Propriétés.
  7. Sous Configuration du mot de passe, sélectionnez Réinitialisation de mot de passe en libre-service.
  8. Cliquez sur Enregistrer.
  9. Dans le menu de gauche, sous Personnaliser, sélectionnez Mises en page.
  10. Dans la version de mise en page, sélectionnez 2.1.3 ou version ultérieure.
  11. Cliquez sur Enregistrer.

Les sections suivantes décrivent comment ajouter une expérience de mot de passe en libre-service à une stratégie personnalisée. L’exemple est basé sur les fichiers de stratégie inclus dans le pack de démarrage de stratégie personnalisé.

Conseil / Astuce

Vous trouverez un exemple complet de l’inscription et de la connexion avec la stratégie de réinitialisation de mot de passe sur GitHub.

Pour indiquer à la stratégie qu’un utilisateur a sélectionné le lien Mot de passe oublié , définissez une revendication booléenne. Utilisez la revendication pour diriger le parcours utilisateur vers le profil technique Mot de passe oublié . La revendication peut également être émise pour le jeton, afin que l’application détecte que l’utilisateur s’est connecté en utilisant le flux d'utilisateur 'Mot de passe oublié'.

Déclarez vos revendications dans le schéma des revendications. Ouvrez le fichier d’extensions de votre stratégie, par exemple, dans SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Recherchez l’élément BuildingBlocks . Si l’élément n’existe pas, ajoutez-le.

  2. Recherchez l’élément ClaimsSchema . Si l’élément n’existe pas, ajoutez-le.

  3. Ajoutez la revendication suivante à l’élément 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> -->
    

Mettre à niveau la version de mise en page

La version 2.1.2 de la mise en page est nécessaire pour activer le flux de réinitialisation de mot de passe en libre-service dans le parcours d’inscription ou de connexion. Pour mettre à niveau la version de mise en page :

  1. Ouvrez le fichier de base de votre stratégie, par exemple SocialAndLocalAccounts/TrustFrameworkBase.xml.

  2. Recherchez l’élément BuildingBlocks . Si l’élément n’existe pas, ajoutez-le.

  3. Recherchez l’élément ContentDefinitions . Si l’élément n’existe pas, ajoutez-le.

  4. Modifiez l’élément DataURI dans l’élément ContentDefinition pour avoir 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> -->
    

Ajouter les profils techniques

Un profil technique de transformation des revendications accède à la revendication isForgotPassword. Le profil technique est référencé ultérieurement. Lorsqu'elle est appelée, elle définit la valeur de la revendication isForgotPassword à true.

  1. Ouvrez le fichier d’extensions de votre stratégie, par exemple, dans SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Recherchez l’élément ClaimsProviders (si l’élément n’existe pas, créez-le), puis ajoutez le fournisseur de revendications suivant :
<!-- 
<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> -->

Le paramètre de profil technique SelfAsserted-LocalAccountSignin-email.forgotPasswordLinkOverride définit l’échange de revendications de réinitialisation de mot de passe qui s’exécute dans votre parcours utilisateur.

Le profil technique LocalAccountWritePasswordUsingObjectId et le gestionnaire de session UseTechnicalProfileForSessionManagementSM-AAD sont nécessaires pour que l’utilisateur puisse se connecter correctement dans des conditions d’authentification unique.

Ajouter le sous-parcours de réinitialisation de mot de passe

L’utilisateur peut désormais se connecter, s’inscrire et effectuer la réinitialisation du mot de passe dans votre parcours utilisateur. Pour mieux organiser le parcours utilisateur, vous pouvez utiliser un sous-parcours pour gérer le flux de réinitialisation de mot de passe.

Le sous-parcours est appelé à partir du parcours utilisateur et effectue les étapes spécifiques qui fournissent l’expérience de réinitialisation de mot de passe à l’utilisateur. Utilisez le sous-parcours de type Call pour que, lorsque le sous-parcours est terminé, le contrôle soit retourné à l’étape d’orchestration qui a lancé le sous-parcours.

  1. Ouvrez le fichier d’extensions de votre stratégie, par exemple SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Recherchez l’élément SubJourneys . Si l’élément n’existe pas, ajoutez-le après l’élément User Journeys . Ensuite, ajoutez le sous-parcours suivant :
<!--
<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>-->

Préparer votre parcours utilisateur

Ensuite, pour connecter le lien Mot de passe oublié ? au sous-parcours Mot de passe oublié, vous devez référencer l'ID du sous-parcours Mot de passe oublié dans l'élément ClaimsProviderSelection de l'étape CombinedSignInAndSignUp.

Si vous n’avez pas votre propre parcours utilisateur personnalisé qui a une étape CombinedSignInAndSignUp , effectuez les étapes suivantes pour dupliquer un parcours utilisateur d’inscription ou de connexion existant. Sinon, passez à la section suivante.

  1. Dans le pack de démarrage, ouvrez le fichier TrustFrameworkBase.xml tel que SocialAndLocalAccounts/TrustFrameworkBase.xml.
  2. Recherchez et copiez l’intégralité du contenu de l’élément UserJourney qui inclut Id="SignUpOrSignIn".
  3. Ouvrez TrustFrameworkExtensions.xml fichier, tel que SocialAndLocalAccounts/TrustFrameworkExtensions.xml, puis recherchez l’élément UserJourneys . Si l’élément n’existe pas, créez-le.
  4. Créez un élément enfant de l’élément UserJourneys en collant l’intégralité du contenu de l’élément UserJourney que vous avez copié à l’étape 2.
  5. Renommez l’ID du parcours utilisateur. Par exemple : Id="CustomSignUpSignIn".

Dans votre parcours utilisateur, vous pouvez représenter le sous-parcours Mot de passe oublié en tant que ClaimsProviderSelection. En ajoutant cet élément, vous connectez le lien Mot de passe oublié ? au sous-parcours de récupération de mot de passe.

  1. Ouvrez le fichier TrustFrameworkExtensions.xml , tel que SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Dans le parcours utilisateur, recherchez l’élément d’étape d’orchestration qui inclut Type="CombinedSignInAndSignUp" ou Type="ClaimsProviderSelection". Il s’agit généralement de la première étape d’orchestration. L’élément ClaimsProviderSelections contient une liste de fournisseurs d’identité qu’un utilisateur peut utiliser pour se connecter. Ajoutez la ligne suivante :

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  3. À l’étape d’orchestration suivante, ajoutez un élément ClaimsExchange en ajoutant la ligne suivante :

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  4. Ajoutez l’étape d’orchestration suivante entre l’étape actuelle et l’étape suivante. La nouvelle étape d’orchestration que vous ajoutez vérifie si la revendication isForgotPassword existe. Si la revendication existe, elle appelle le sous-parcours de réinitialisation de mot de passe.

    <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. Après avoir ajouté la nouvelle étape d'orchestration, renuméroter les étapes séquentiellement sans sauter les entiers compris entre 1 et N.

Définir le parcours utilisateur à exécuter

Maintenant que vous avez modifié ou créé un parcours utilisateur, dans la section Partie de confiance , spécifiez le parcours qu’Azure AD B2C exécutera pour cette stratégie personnalisée.

  1. Ouvrez le fichier qui a l’élément Relying Party , tel que SocialAndLocalAccounts/SignUpOrSignin.xml.

  2. Dans l’élément RelyingParty , recherchez l’élément DefaultUserJourney .

  3. Mettez à jour defaultUserJourney ReferenceId pour qu’il corresponde à l’ID du parcours utilisateur dans lequel vous avez ajouté ClaimsProviderSelections.

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

Indiquer le flux de mot de passe oublié dans votre application

Votre application peut avoir besoin de détecter si l’utilisateur s’est connecté à l’aide du flux utilisateur mot de passe oublié. La revendication isForgotPassword contient une valeur booléenne qui indique qu’elles l’ont fait. La revendication peut être émise dans le jeton envoyé à votre demande. Si nécessaire, ajoutez isForgotPassword aux revendications de sortie dans la section Partie de confiance . Votre application peut vérifier la revendication isForgotPassword pour déterminer si l’utilisateur réinitialise son mot de passe.

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

Charger la politique personnalisée

  1. Connectez-vous au portail Azure.
  2. Si vous avez accès à plusieurs locataires, sélectionnez l’icône Paramètres dans le menu supérieur pour basculer vers le locataire Azure AD B2C dans le menu Répertoires + abonnements .
  3. Dans le portail Azure, recherchez et sélectionnez Azure AD B2C.
  4. Dans le menu sous Stratégies, sélectionnez Identity Experience Framework.
  5. Sélectionnez Charger une stratégie personnalisée. Dans l’ordre suivant, chargez les fichiers de stratégie que vous avez modifiés :
    1. Fichier de base de votre stratégie, par exemple TrustFrameworkBase.xml.
    2. La stratégie d’extension, par exemple, TrustFrameworkExtensions.xml.
    3. La stratégie de la partie de confiance, par exemple SignUpSignIn.xml.

Masquer le bouton Modifier l’e-mail (facultatif)

Une fois l’e-mail vérifié, l’utilisateur peut toujours sélectionner Modifier l’e-mail, entrer une autre adresse e-mail, puis répéter la vérification par e-mail. Si vous préférez masquer le bouton Modifier l’e-mail , vous pouvez modifier le css pour masquer les éléments HTML associés dans la boîte de dialogue. Par exemple, vous pouvez ajouter l’entrée CSS suivante à selfAsserted.html et personnaliser l’interface utilisateur à l’aide de modèles HTML :

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

Tester le flux de réinitialisation de mot de passe

  1. Sélectionnez un flux d’utilisateur d’inscription ou de connexion (type recommandé) que vous souhaitez tester.
  2. Sélectionner Exécuter le flux utilisateur.
  3. Pour l’application, sélectionnez l’application web nommée webapp1 que vous avez inscrite précédemment. L’URL de réponse doit être https://jwt.ms.
  4. Sélectionner Exécuter le flux utilisateur.
  5. Dans la page d’inscription ou de connexion, sélectionnez Mot de passe oublié ?.
  6. Vérifiez l’adresse e-mail du compte que vous avez créé précédemment, puis sélectionnez Continuer.
  7. Dans la boîte de dialogue affichée, modifiez le mot de passe de l’utilisateur, puis sélectionnez Continuer. Le jeton est retourné à https://jwt.ms et le navigateur l'affiche.
  8. Vérifiez la valeur de la revendication isForgotPassword du jeton de retour. S’il existe et est défini sur true, l’utilisateur a réinitialisé le mot de passe.

Stratégie de réinitialisation de mot de passe (héritée)

Si l’expérience de réinitialisation de mot de passe en libre-service n’est pas activée, la sélection de ce lien ne déclenche pas automatiquement un flux utilisateur de réinitialisation de mot de passe. Au lieu de cela, le code AADB2C90118 d’erreur est retourné à votre application. Votre application doit gérer ce code d’erreur en réinitialisant la bibliothèque d’authentification pour authentifier un flux utilisateur de réinitialisation de mot de passe Azure AD B2C.

Le diagramme suivant illustre le processus :

  1. Dans l’application, l’utilisateur sélectionne Se connecter. L’application lance une demande d’autorisation et redirige vers Azure AD B2C afin que l’utilisateur puisse terminer la connexion. La demande d’autorisation spécifie un nom de stratégie d’inscription ou de connexion, tel que B2C_1_signup_signin.
  2. L’utilisateur sélectionne le lien Forgot your password ? Azure AD B2C retourne le AADB2C90118 code d’erreur à l’application.
  3. L’application gère le code d’erreur et lance une nouvelle demande d’autorisation. La demande d’autorisation spécifie le nom de la stratégie de réinitialisation de mot de passe, tel que B2C_1_pwd_reset.

Diagramme montrant le flux utilisateur de réinitialisation de mot de passe hérité avec des étapes numérotées.

Vous pouvez voir une démonstration de base de la façon dont les flux utilisateur relient notre exemple de ASP.NET.

Créer un flux utilisateur de réinitialisation de mot de passe

Pour permettre aux utilisateurs de votre application de réinitialiser leurs mots de passe, créez un flux utilisateur de réinitialisation de mot de passe :

  1. Dans le portail Azure, accédez à la vue d’ensemble du locataire Azure AD B2C.
  2. Dans le menu de gauche sous Stratégies, sélectionnez Flux utilisateur, puis Nouveau flux utilisateur.
  3. Dans Créer un flux utilisateur, sélectionnez le flux utilisateur de réinitialisation de mot de passe .
  4. Sous Sélectionner une version, sélectionnez Recommandé, puis sélectionnez Créer.
  5. Pour Nom, entrez un nom pour le flux d’utilisateur. Par exemple, passwordreset1.
  6. Pour les fournisseurs d’identité, activez réinitialiser le mot de passe avec le nom d'utilisateur ou réinitialiser le mot de passe avec l’adresse e-mail.
  7. Sous Authentification multifacteur, si vous souhaitez obliger les utilisateurs à vérifier leurs identités à l’aide d’une deuxième méthode d’authentification, sélectionnez le type de méthode et quand appliquer l’authentification multifacteur. En savoir plus.
  8. Sous Accès conditionnel, si vous avez configuré des stratégies d’accès conditionnel pour votre locataire Azure AD B2C et que vous souhaitez les utiliser dans ce flux utilisateur, cochez la case Appliquer les stratégies d’accès conditionnel . Vous n’avez pas besoin de spécifier un nom de stratégie. En savoir plus.
  9. Sous Revendications d’application, sélectionnez Afficher plus. Choisissez les revendications à renvoyer dans les jetons d’authentification qui sont redirigés vers votre application. Par exemple, sélectionnez l’ID d’objet de l’utilisateur.
  10. Cliquez sur OK.
  11. Sélectionnez Créer pour ajouter le flux utilisateur. Un préfixe de B2C_1 est automatiquement ajouté au nom.

Tester le flux utilisateur

Pour tester le flux utilisateur :

  1. Sélectionnez le flux utilisateur que vous avez créé. Dans la page vue d’ensemble du flux utilisateur, sélectionnez Exécuter le flux utilisateur.
  2. Pour l’application, sélectionnez l’application web que vous souhaitez tester, par exemple celle nommée webapp1 si vous l’avez inscrite précédemment. L’URL de réponse doit être https://jwt.ms.
  3. Sélectionnez Exécuter le flux utilisateur, vérifiez l’adresse e-mail du compte pour lequel vous souhaitez réinitialiser le mot de passe, puis sélectionnez Continuer.
  4. Modifiez le mot de passe, puis sélectionnez Continuer. Le jeton est retourné à https://jwt.ms et le navigateur l'affiche.

Créer une stratégie de réinitialisation de mot de passe

Les stratégies personnalisées sont un ensemble de fichiers XML que vous chargez sur votre locataire Azure AD B2C pour définir les parcours utilisateur. Nous fournissons des packs de démarrage qui ont plusieurs stratégies prédéfinies, notamment l’inscription et la connexion, la réinitialisation de mot de passe et les stratégies de modification de profil. Pour plus d’informations, consultez Prise en main des stratégies personnalisées dans Azure AD B2C.

Résoudre les problèmes liés aux flux d’utilisateurs Azure AD B2C et aux stratégies personnalisées

Votre application doit gérer certaines erreurs provenant du service Azure B2C. Découvrez comment résoudre les problèmes liés aux flux utilisateur et aux stratégies personnalisées d’Azure AD B2C.

Configurez une réinitialisation forcée du mot de passe.

Inscrivez-vous et connectez-vous avec la réinitialisation de mot de passe incorporée.