Configuration d’un flux de réinitialisation de mot de passe dans Azure Active Directory B2C.

Avant de commencer, utilisez le sélecteur Choisir un type de stratégie 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, les utilisateurs peuvent réinitialiser leurs mots de passe à l’aide du lien Vous avez oublié votre mot de passe ? . Ce flux de réinitialisation de mot de passe libre-service s’applique aux comptes locaux dans le Répertoire actif Azure B2C (Azure AD B2C) qui utilisent une adresse de messagerie ou un nom d’utilisateur avec un mot de passe pour la connexion.

Le flux de réinitialisation du mot de passe est constitué des étapes suivantes :

  1. Sur la page d’inscription et de connexion, l’utilisateur sélectionne le lien Vous avez oublié votre mot de passe ? . Azure AD B2C lance le flux de réinitialisation du mot de passe.

  2. Dans la boîte de dialogue suivante qui s’affiche, l’utilisateur entre son adresse de messagerie, puis sélectionne Envoyer le code de vérification. Azure AD B2C envoie un code de vérification à la boîte de réception de l’utilisateur. L’utilisateur copie ensuite le code de vérification de l’e-mail, le rentre sur la page 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. (Après la vérification de l’e-mail, l’utilisateur peut toujours appuyer sur le bouton Modifier l’adresse e-mail ; voir Masquer le bouton de modification d’adresse e-mail.)

    Diagram that shows three dialogs in the password reset flow.

Conseil

Un utilisateur peut modifier son mot de passe à l’aide du processus de réinitialisation de mot de passe libre-service s’il oublie son mot de passe et souhaite le réinitialiser. Dans ce cas, choisissez l'une des options suivantes :

  • Pour prendre en charge les cas où 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, lorsque ses mots de passe ont été réinitialisés par un administrateur, ou une fois qu’ils ont été migrés vers Azure AD B2C avec des mots de passe aléatoires), utilisez un flux de réinitialisation de mot de passe forcé .

Masquer le bouton de modification d’adresse e-mail

Une fois l’e-mail vérifié, l’utilisateur peut toujours sélectionner Modifier l’adresse 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’adresse e-mail, vous pouvez modifier la CSS pour masquer les éléments HTML associés dans la boîte de dialogue. Par exemple, vous pouvez ajouter l’entrée CSS ci-dessous à selfAsserted.html et personnaliser l’interface utilisateur avec des modèles html :

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

Notez que le nom par défaut du bouton Modifier l’adresse e-mail sur selfAsserted.html est changeclaims. Pour rechercher le nom du bouton, sur la page d’inscription, examinez la source de la page à l’aide d’un outil de navigation comme Inspect.

Prérequis

La nouvelle expérience de réinitialisation de mot de passe fait maintenant partie de la stratégie d’inscription ou de connexion. Quand l’utilisateur sélectionne le lien Vous avez oublié votre mot de passe ? , il est immédiatement dirigé vers l’expérience Mot de passe oublié. 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 du mot de passe en libre-service peut être configurée pour les flux d’utilisateur de connexion (recommandé) ou d’inscription et de connexion (recommandé). Si vous n’avez pas l’un de ces flux d’utilisateurs configurés, créez un flux d’utilisateur d'inscription ou de connexion .

Pour activer la réinitialisation du mot de passe en libre-service pour le flux d’utilisateur d’inscription ou de connexion :

  1. Connectez-vous au portail Azure.
  2. Sélectionnez l’icône Répertoires + Abonnements dans la barre d’outils du portail.
  3. Sur la page Paramètres du portail | Répertoires + abonnements, recherchez votre répertoire AD B2C Azure dans la liste Nom de répertoire, puis sélectionnez Basculer.
  4. Dans la Portail Azure, recherchez et sélectionnez Azure AD B2C.
  5. Sélectionnez Flux d’utilisateurs.
  6. Sélectionnez un flux d’utilisateur d’inscription ou de connexion (de type Recommandé) que vous souhaitez personnaliser.
  7. Dans le menu de gauche, sous Paramètres, sélectionnez Propriétés.
  8. Sous Configuration du mot de passe, sélectionnez Réinitialisation du mot de passe en libre-service.
  9. Sélectionnez Enregistrer.
  10. Dans le menu de gauche, sous Personnaliser, sélectionnez Mises en page.
  11. Dans version de mise en page, sélectionnez 2.1.3 ou une version ultérieure.
  12. Sélectionnez Enregistrer.

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

Conseil

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

Pour indiquer à la stratégie que l’utilisateur a sélectionné le lien Vous avez oublié votre mot de passe ? , définissez une revendication booléenne. Utilisez la revendication pour diriger le parcours utilisateur vers le profil technique de Mot de passe oublié. La revendication peut également être émise à destination du jeton pour que l’application soit informée que l’utilisateur s’est connecté via le flux utilisateur Mot de passe oublié.

Déclarez vos revendications dans le schéma de 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. Localisez 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 de mise en page 2.1.2 est requise pour activer le processus de réinitialisation du mot de passe libre-service dans le parcours d’inscription ou de connexion. Pour mettre à niveau la version de mise en page :

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

  2. Localisez l’élément ContentDefinitions. Si l’élément n’existe pas, ajoutez-le.

  3. 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 des profils techniques

Un profil technique de transformation des revendications accède à la revendication isForgotPassword. Le profil technique est référencé ultérieurement. Lorsqu’il est appelé, il définit la valeur de la revendication isForgotPassword sur true. 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 gestionnaire de sessions UseTechnicalProfileForSessionManagement du profil technique LocalAccountWritePasswordUsingObjectIdSM-AAD est requis pour que l’utilisateur préforme les connexions ultérieures dans les conditions d’authentification unique.

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

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

Le sous-parcours est appelé à partir du parcours utilisateur et exécute les étapes spécifiques pour fournir l’expérience de réinitialisation du mot de passe à l’utilisateur. Utilisez le Call sous-parcours type afin que lorsque le sous-parcours est terminé, le contrôle est renvoyé à l’étape d’orchestration qui a initié le sous-parcours.

Recherchez l’élément Sous-parcours. Si l’élément n’existe pas, ajoutez-le après l’élément deParcours de l'utilisateur. Ajoutez ensuite 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, connectez le lien vous avez oublié votre mot de passe ? au sous-parcours du mot de passe oublié. Référencez l’ID de sous-parcours de mot de passe oublié dans l’élément ClaimsProviderSelection de l’étape CombinedSignInAndSignUp .

Si vous n’avez pas votre propre parcours utilisateur personnalisé avec 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 .
  2. Recherchez et copiez l’intégralité du contenu de l’élément UserJourney comprenant Id="SignUpOrSignIn".
  3. Ouvrez TrustFrameworkExtensions.xml et recherchez l’élément UserJourneys. Si l’élément n’existe pas, ajoutez-en un.
  4. Créez un élément enfant de l’élément UserJourneys en collant tout le 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. L’ajout de cet élément permet de connecter le lien Vous avez oublié votre mot de passe ? au sous-parcours Mot de passe oublié.

  1. Dans le parcours utilisateur, recherchez l’élément d’étape d’orchestration incluant 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é via lesquels un utilisateur peut se connecter. Ajoutez la ligne suivante :

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

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  3. Ajoutez l’étape d’orchestration suivante entre l’étape en cours et la 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>
    
  4. Après avoir ajouté la nouvelle étape d’orchestration, renumérotez les étapes séquentiellement sans sauter d’entiers de 1 à 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. Dans l’élément RelyingParty, recherchez l’élément DefaultUserJourney . Mettez à jour l’élément 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 Mot de passe oublié à votre application

Votre application peut être amenée à détecter si l’utilisateur s’est connecté via le flux d’utilisateur Mot de passe oublié. La revendication isForgotPassword contient une valeur booléenne qui indique qu’elle a été exécutée. 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>

Téléchargez la stratégie personnalisée

  1. Connectez-vous au portail Azure.
  2. Sélectionnez l’icône Répertoires + Abonnements dans la barre d’outils du portail.
  3. Sur la page Paramètres du portail | Répertoires + abonnements, recherchez votre répertoire AD B2C Azure dans la liste Nom de répertoire, puis sélectionnez Basculer.
  4. Dans le portail Azure, recherchez et sélectionnez Azure AD B2C.
  5. Dans le menu sous Stratégies, sélectionnez Infrastructure d’expérience d’identité.
  6. Sélectionnez Charger une stratégie personnalisée. Dans l’ordre suivant, téléchargez les deux fichiers de stratégie que vous avez modifiés :
    1. La stratégie d’extension, par exemple, TrustFrameworkExtensions.xml.
    2. La stratégie de la partie de confiance, par exemple SignUpSignIn.xml.

Tester le flux de réinitialisation de mot de passe

  1. Sélectionnez le flux d’utilisateur d’inscription ou de connexion (de type Recommandé) que vous souhaitez tester.
  2. Sélectionnez Exécuter le flux utilisateur.
  3. Pour Application, sélectionnez l’application Web nommée application Web 1 que vous avez inscrite précédemment. L’URL de réponse doit être https://jwt.ms.
  4. Sélectionnez 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 qui s’affiche, 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. Si elle existe et qu’elle a la valeur true, l’utilisateur a réinitialisé le mot de passe.

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

Si l’expérience de réinitialisation du mot de passe libre-service n’est pas activée, le fait de sélectionner ce lien ne déclenche pas automatiquement un flux de travail utilisateur de réinitialisation À la place, le code d’erreur AADB2C90118 est retourné à votre application. Votre application doit gérer ce code d’erreur en réinitialisant la bibliothèque d’authentification pour authentifier un workflow d’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 dirige l’utilisateur vers Azure AD B2C pour qu’il finaliser sa 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 Vous avez oublié votre mot de passe ? . Azure AD B2C retourne le code d’erreur AADB2C90118 à 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 du mot de passe, par exemple B2C_1_pwd_reset.

    Diagram that shows the legacy password reset user flow.

vous pouvez voir un exemple ASP.NETde base, qui montre comment les flux d’utilisateurs sont liés.

Créer un flux d’utilisateur de réinitialisation du mot de passe

Pour permettre aux utilisateurs de votre application de réinitialiser leur mot de passe, créez un flux d’utilisateur de réinitialisation du 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 d’utilisateurs, puis sélectionnez Nouveau flux d’utilisateur.
  3. Dans Créer un flux d’utilisateur, sélectionnez le flux d’utilisateur de Réinitialisation de mot de passe .
  4. Sous Sélectionner une version, sélectionnez Recommandé, puis Créer.
  5. Pour nom, entrez un nom pour le flux d’utilisateur. Par exemple, passwordreset1.
  6. Sous Fournisseurs d’identité, activez Réinitialiser le mot de passe à l’aide du nom d’utilisateur ou Réinitialiser le mot de passe à l’aide de l’adresse e-mail.
  7. Sous Authentification multifacteur, si vous voulez demander aux utilisateurs de vérifier leur identité avec une deuxième méthode d’authentification, choisissez le type de méthode et le moment auquel appliquer l’authentification multifacteur (MFA). 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 workflow d’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. Plus d’informations
  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 ID d’objet de l’utilisateur.
  10. Sélectionnez OK.
  11. Sélectionnez Créer pour ajouter le flux d’utilisateur. Un préfixe de B2C_1 est automatiquement ajouté au nom.

Tester le flux utilisateur

Pour tester le flux d’utilisateur :

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

Création d’une stratégie de réinitialisation du mot de passe

Les stratégies personnalisées sont un ensemble de fichiers XML que vous téléchargez vers votre locataire Azure AD B2C pour définir des parcours utilisateur. Nous fournissons des packs de démarrage avec plusieurs stratégies prédéfinies, par exemple l’inscription et la connexion, la réinitialisation du mot de passe et des stratégies de modification de profil. Pour plus d’informations, consultez Démarrage avec les stratégies personnalisées dans Azure AD B2C.

Résolvez les problèmes des flux d’utilisateurs Azure AD B2C et à des 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 d’utilisateurs et aux stratégies personnalisées Azure AD B2C.

Étapes suivantes

Configurer une réinitialisation de mot de passe forcée

Inscription et connexion avec réinitialisation de mot de passe incorporée.