Configurer la modification du mot de passe avec des stratégies personnalisées dans le Répertoire actif Azure 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.

Vous pouvez configurer le Répertoire actif Azure B2C (Azure AD B2C) afin qu’un utilisateur connecté avec un compte local puisse modifier son mot de passe sans utiliser la vérification par e-mail pour prouver son identité.

Le flux de changement de mot de passe implique les étapes suivantes :

  1. L’utilisateur se connecte à son compte local. Si la session est toujours active, Azure AD B2C autorise l’utilisateur et passe à l’étape suivante.

  2. Dans l'Ancien mot de passe, l’utilisateur vérifie son ancien mot de passe. Dans le Nouveau mot de passe, il crée et confirme son nouveau mot de passe.

    Screenshot that shows two numbered dialogs for making a password change.

Conseil

Un utilisateur peut utiliser le flux de modification de mot de passe décrit dans cet article uniquement lorsqu’il connaît son mot de passe et qu’il souhaite modifier son mot de passe. Nous vous recommandons également d’activer la réinitialisation de mot de passe libre-service pour prendre en charge les cas où l’utilisateur oublie son mot de passe.

Cette fonctionnalité est disponible uniquement pour les stratégies personnalisées. Pour accéder aux étapes de configuration, sélectionnez Stratégie personnalisée dans le sélecteur précédent.

Prérequis

Ajouter les éléments

  1. Ouvrez votre fichier TrustFrameworkExtensions.xml. Ajoutez l’élément ClaimType suivant à l’élément ClaimsSchema, avec un identificateur oldPassword :

    <BuildingBlocks>
      <ClaimsSchema>
        <ClaimType Id="oldPassword">
          <DisplayName>Old Password</DisplayName>
          <DataType>string</DataType>
          <UserHelpText>Enter your old password</UserHelpText>
          <UserInputType>Password</UserInputType>
        </ClaimType>
      </ClaimsSchema>
    </BuildingBlocks>
    
  2. Un élément ClaimsProvider contient le profil technique qui authentifie l’utilisateur. Ajoutez les fournisseurs de revendications suivants à l’élément ClaimsProviders :

    <ClaimsProviders>
      <ClaimsProvider>
        <DisplayName>Local Account SignIn</DisplayName>
        <TechnicalProfiles>
          <TechnicalProfile Id="login-NonInteractive-PasswordChange">
            <DisplayName>Local Account SignIn</DisplayName>
            <InputClaims>
              <InputClaim ClaimTypeReferenceId="oldPassword" PartnerClaimType="password" Required="true" />
              </InputClaims>
            <IncludeTechnicalProfile ReferenceId="login-NonInteractive" />
          </TechnicalProfile>
        </TechnicalProfiles>
      </ClaimsProvider>
      <ClaimsProvider>
        <DisplayName>Local Account Password Change</DisplayName>
        <TechnicalProfiles>
          <TechnicalProfile Id="LocalAccountWritePasswordChangeUsingObjectId">
            <DisplayName>Change password (username)</DisplayName>
            <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
            <Metadata>
              <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
            </Metadata>
            <InputClaims>
              <InputClaim ClaimTypeReferenceId="objectId" />
            </InputClaims>
            <OutputClaims>
              <OutputClaim ClaimTypeReferenceId="oldPassword" Required="true" />
              <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
              <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
            </OutputClaims>
            <ValidationTechnicalProfiles>
              <ValidationTechnicalProfile ReferenceId="login-NonInteractive-PasswordChange" />
              <ValidationTechnicalProfile ReferenceId="AAD-UserWritePasswordUsingObjectId" />
            </ValidationTechnicalProfiles>
          </TechnicalProfile>
        </TechnicalProfiles>
      </ClaimsProvider>
    </ClaimsProviders>
    
  3. L’élément UserJourneys définit le chemin d’accès que l’utilisateur utilise lorsqu’il interagit avec votre application. Ajoutez l’élément UserJourneys s’il n’existe pas, avec l’identificateur UserJourneyPasswordChange :

    <UserJourneys>
      <UserJourney Id="PasswordChange">
        <OrchestrationSteps>
          <OrchestrationStep Order="1" Type="ClaimsProviderSelection" ContentDefinitionReferenceId="api.signuporsignin">
            <ClaimsProviderSelections>
              <ClaimsProviderSelection TargetClaimsExchangeId="LocalAccountSigninEmailExchange" />
            </ClaimsProviderSelections>
          </OrchestrationStep>
          <OrchestrationStep Order="2" Type="ClaimsExchange">
            <ClaimsExchanges>
              <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
            </ClaimsExchanges>
          </OrchestrationStep>
          <OrchestrationStep Order="3" Type="ClaimsExchange">
            <ClaimsExchanges>
              <ClaimsExchange Id="NewCredentials" TechnicalProfileReferenceId="LocalAccountWritePasswordChangeUsingObjectId" />
            </ClaimsExchanges>
          </OrchestrationStep>
          <OrchestrationStep Order="4" Type="ClaimsExchange">
            <ClaimsExchanges>
              <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
            </ClaimsExchanges>
          </OrchestrationStep>
          <OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
        </OrchestrationSteps>
        <ClientDefinition ReferenceId="DefaultWeb" />
      </UserJourney>
    </UserJourneys>
    
  4. Enregistrez le fichier de stratégie TrustframeworkExtensions.xml.

  5. Copiez le fichier ProfileEdit.xml que vous avez téléchargé avec le pack de démarrage et nommez-le ProfileEditPasswordChange.xml.

  6. Ouvrez le nouveau fichier, puis mettez à jour l’attribut PolicyId avec une valeur unique. Cette valeur est le nom de votre stratégie. Par exemple, B2C_1A_profile_edit_password_change.

  7. Modifiez l’attribut ReferenceId dans DefaultUserJourney afin qu’il corresponde à l’ID du nouveau parcours utilisateur que vous avez créé. Par exemple, PasswordChange.

  8. Enregistrez vos modifications.

Chargez et testez la stratégie.

  1. Connectez-vous au portail Azure.
  2. Si vous avez accès à plusieurs locataires, sélectionnez l’icône Paramètres dans le menu du haut pour basculer vers votre locataire Azure AD B2C à partir du menu Annuaires + abonnements.
  3. Choisissez Tous les services dans le coin supérieur gauche du portail Azure, puis recherchez et sélectionnez Azure AD B2C.
  4. Sélectionnez Infrastructure d’expérience d’identité.
  5. Dans Stratégies personnalisées, sélectionnez Télécharger la stratégie.
  6. Sélectionnez Remplacer la stratégie si elle existe, puis recherchez et sélectionnez le fichier TrustFrameworkExtensions.xml.
  7. Sélectionnez Charger.
  8. Répétez les étapes 5 à 7 pour le fichier de la partie de confiance (par exemple, ProfileEditPasswordChange.xml).

Exécuter la stratégie

  1. Ouvrez la stratégie que vous avez changée. Par exemple, B2C_1A_profile_edit_password_change.
  2. Pour Application, sélectionnez l’application que vous avez inscrite précédemment. Pour voir le jeton, l’URL de réponse doit indiquer https://jwt.ms.
  3. Sélectionnez Exécuter maintenant. Sous le nouvel onglet qui s’ouvre, supprimez « &prompt=login » de l’URL, puis actualisez l’onglet. Ensuite, connectez-vous avec le compte que vous avez créé précédemment. Une boîte de dialogue de modification de mot de passe vous donne la possibilité de modifier le mot de passe.

Étapes suivantes