> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Décrit les différentes façons de réinitialiser le mot de passe des utilisateurs de vos applications Auth0.

# Modifier les mots de passe des utilisateurs

export const AuthCodeGroup = ({children, dropdown}) => {
  const [processedChildren, setProcessedChildren] = useState(children);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      unsubscribe = window.autorun(() => {
        const processChildren = node => {
          if (typeof node === "string") {
            let processedNode = node;
            for (const [key, value] of window.rootStore.variableStore.values.entries()) {
              const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
              processedNode = processedNode.replaceAll(new RegExp(escapedKey, "g"), value);
            }
            return processedNode;
          } else if (Array.isArray(node)) {
            return node.map(processChildren);
          } else if (node && node.props && node.props.children) {
            return {
              ...node,
              props: {
                ...node.props,
                children: processChildren(node.props.children)
              }
            };
          }
          return node;
        };
        setProcessedChildren(processChildren(children));
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  return <CodeGroup dropdown={dropdown}>{processedChildren}</CodeGroup>;
};

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASKED*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

<Card title="Aperçu">
  Concepts clés

  * Déclenchez une réinitialisation du mot de passe à l’aide d’Auth0 Dashboard ou de la Management API.
</Card>

Cette rubrique décrit différentes façons de réinitialiser le mot de passe d’un utilisateur dans votre base de données. Vous pouvez modifier les mots de passe uniquement pour les utilisateurs de vos [connexions de base de données](/fr-CA/docs/authenticate/database-connections). Les utilisateurs qui se connectent avec des connexions [sociales](/fr-CA/docs/authenticate/identity-providers/social-identity-providers) ou [d’entreprise](/fr-CA/docs/authenticate/identity-providers/enterprise-identity-providers) doivent réinitialiser leur mot de passe auprès du <Tooltip tip="fournisseur d’identité (IdP) : service qui stocke et gère les identités numériques." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=identity+provider">fournisseur d’identité</Tooltip> (comme Google ou Facebook), et les instructions suivantes ne fonctionnent que si l’adresse courriel de l’utilisateur est connue.

Il existe deux méthodes de base pour modifier le mot de passe d’un utilisateur :

* [Déclencher un flux interactif de réinitialisation du mot de passe](#trigger-an-interactive-password-reset-flow) qui envoie à l’utilisateur un lien par courriel. Le lien ouvre la page de réinitialisation du mot de passe d’Auth0, où l’utilisateur peut saisir un nouveau mot de passe.
* [Définir directement le nouveau mot de passe](#directly-set-the-new-password) à l’aide de la <Tooltip tip="Management API : un produit qui permet aux clients d’effectuer des tâches administratives." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Management+API">Management API</Tooltip> d’Auth0 ou d’<Tooltip tip="Management API : un produit qui permet aux clients d’effectuer des tâches administratives." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip>.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  La réinitialisation du mot de passe d’un utilisateur met fin à sa session.
</Callout>

<Card title="Vous ne trouvez pas ce que vous cherchez ?">
  * Pour configurer la page personnalisée de réinitialisation du mot de passe, consultez [Customize Password Reset Page](/fr-CA/docs/customize/login-pages/classic-login/customize-password-reset-page).
  * Pour mettre en œuvre un comportement personnalisé après un changement de mot de passe réussi, consultez [Actions Triggers: post-change-password](/fr-CA/docs/customize/actions/explore-triggers/password-reset-triggers/post-change-password-trigger).
  * Pour réinitialiser le mot de passe de votre compte utilisateur Auth0 personnel, consultez [Reset Account Passwords](/fr-CA/docs/troubleshoot/customer-support/reset-account-passwords).
</Card>

<div id="trigger-an-interactive-password-reset-flow">
  ## Déclencher un flux interactif de réinitialisation du mot de passe
</div>

Il existe deux façons de déclencher un flux interactif de réinitialisation du mot de passe, selon votre cas d’utilisation : à partir de la page <Tooltip tip="Universal Login : votre application redirige vers Universal Login, hébergé sur le serveur d’autorisation d’Auth0, afin de vérifier l’identité de l’utilisateur." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=Universal+Login">Universal Login</Tooltip> ou au moyen de l’API d’authentification.

<div id="universal-login-page">
  ### Page de Universal Login
</div>

Si votre application utilise Universal Login, l’utilisateur peut se servir du widget Lock sur l’écran de connexion pour déclencher l’envoi d’un courriel de réinitialisation du mot de passe. Avec Universal Login, l’utilisateur peut cliquer sur le lien **Vous ne vous souvenez pas de votre mot de passe ?**, puis saisir son adresse courriel. Une requête POST est alors envoyée à Auth0, ce qui déclenche le processus de réinitialisation du mot de passe. L’utilisateur [reçoit un courriel de réinitialisation du mot de passe](#password-reset-email).

<div id="authentication-api">
  ### API d’authentification
</div>

Si votre application utilise un flux interactif de réinitialisation du mot de passe au moyen de l’API d’authentification, effectuez un appel `POST`. Dans le champ `email`, indiquez l’adresse courriel de l’utilisateur qui doit modifier son mot de passe. Si l’appel réussit, l’utilisateur [reçoit un courriel de réinitialisation du mot de passe](#password-reset-email).

Si vous appelez l’API à partir du navigateur, assurez-vous que l’URL d’origine est autorisée :

Accédez à [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/#/applications/\{yourClientId}/settings), puis ajoutez l’URL à la liste **Allowed Origins (CORS)**.

Si vous utilisez une connexion de base de données personnalisée, vérifiez si l’utilisateur existe dans la base de données avant d’appeler l’API d’authentification pour `changePassword`.

<AuthCodeGroup>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://{yourDomain}/dbconnections/change_password' \
    --header 'content-type: application/json' \
    --data '{"client_id": "{yourClientId}","email": "","connection": "Username-Password-Authentication"}'
  ```

  ```csharp C# theme={null}
  var client = new RestClient("https://{yourDomain}/dbconnections/change_password");
  var request = new RestRequest(Method.POST);
  request.AddHeader("content-type", "application/json");
  request.AddParameter("application/json", "{"client_id": "{yourClientId}","email": "","connection": "Username-Password-Authentication"}", ParameterType.RequestBody);
  IRestResponse response = client.Execute(request);
  ```

  ```go Go theme={null}
  package main

  import (
  	"fmt"
  	"strings"
  	"net/http"
  	"io/ioutil"
  )

  func main() {

  	url := "https://{yourDomain}/dbconnections/change_password"

  	payload := strings.NewReader("{"client_id": "{yourClientId}","email": "","connection": "Username-Password-Authentication"}")

  	req, _ := http.NewRequest("POST", url, payload)

  	req.Header.Add("content-type", "application/json")

  	res, _ := http.DefaultClient.Do(req)

  	defer res.Body.Close()
  	body, _ := ioutil.ReadAll(res.Body)

  	fmt.Println(res)
  	fmt.Println(string(body))

  }
  ```

  ```java Java theme={null}
  HttpResponse<String> response = Unirest.post("https://{yourDomain}/dbconnections/change_password")
    .header("content-type", "application/json")
    .body("{"client_id": "{yourClientId}","email": "","connection": "Username-Password-Authentication"}")
    .asString();
  ```

  ```javascript Node.JS theme={null}
  var axios = require("axios").default;

  var options = {
    method: 'POST',
    url: 'https://{yourDomain}/dbconnections/change_password',
    headers: {'content-type': 'application/json'},
    data: {
      client_id: '{yourClientId}',
      email: '',
      connection: 'Username-Password-Authentication'
    }
  };

  axios.request(options).then(function (response) {
    console.log(response.data);
  }).catch(function (error) {
    console.error(error);
  });
  ```

  ```php PHP theme={null}
  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://{yourDomain}/dbconnections/change_password",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "{"client_id": "{yourClientId}","email": "","connection": "Username-Password-Authentication"}",
    CURLOPT_HTTPHEADER => [
      "content-type: application/json"
    ],
  ]);

  $response = curl_exec($curl);
  $err = curl_error($curl);

  curl_close($curl);

  if ($err) {
    echo "cURL Error #:" . $err;
  } else {
    echo $response;
  }
  ```

  ```python Python theme={null}
  import http.client

  conn = http.client.HTTPSConnection("")

  payload = "{"client_id": "{yourClientId}","email": "","connection": "Username-Password-Authentication"}"

  headers = { 'content-type': "application/json" }

  conn.request("POST", "/{yourDomain}/dbconnections/change_password", payload, headers)

  res = conn.getresponse()
  data = res.read()

  print(data.decode("utf-8"))
  ```

  ```ruby Ruby theme={null}
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://{yourDomain}/dbconnections/change_password")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request.body = "{"client_id": "{yourClientId}","email": "","connection": "Username-Password-Authentication"}"

  response = http.request(request)
  puts response.read_body
  ```
</AuthCodeGroup>

<div id="password-reset-email">
  ### Courriel de réinitialisation du mot de passe
</div>

Peu importe comment le processus de réinitialisation du mot de passe a été déclenché, l’utilisateur reçoit un courriel contenant un lien lui permettant de réinitialiser son mot de passe.

<Frame>
  <img src="https://mintcdn.com/translations/MV7tE-x71x8RWRES/docs/images/cdy7uua7fh8z/5IBhcrCJ7XXI6OgQOnHMJa/33cdafbfe7a63a48cfaa2e58a12a2494/password-reset-email.png?fit=max&auto=format&n=MV7tE-x71x8RWRES&q=85&s=9c882ccdbf0d64a715789d2e63feadc3" alt="Courriel de réinitialisation du mot de passe" width="596" height="748" data-path="docs/images/cdy7uua7fh8z/5IBhcrCJ7XXI6OgQOnHMJa/33cdafbfe7a63a48cfaa2e58a12a2494/password-reset-email.png" />
</Frame>

En cliquant sur le lien, l’utilisateur est redirigé vers la [page de réinitialisation du mot de passe](/fr-CA/docs/customize/login-pages/classic-login/customize-password-reset-page).

Après avoir soumis le nouveau mot de passe, l’utilisateur voit une confirmation indiquant qu’il peut maintenant se connecter avec ses nouveaux identifiants.

Remarques sur les réinitialisations de mot de passe :

* Le lien de réinitialisation du mot de passe dans le courriel n’est valide qu’une seule fois.
* Si l’utilisateur reçoit plusieurs courriels de réinitialisation du mot de passe, seul le lien contenu dans le courriel le plus récent est valide.
* Le champ **URL Lifetime** détermine pendant combien de temps le lien demeure valide. Dans l’Auth0 Dashboard, vous pouvez [personnaliser le courriel de changement de mot de passe](/fr-CA/docs/customize/email/email-templates) et [modifier la durée de validité du lien](https://auth0.com/docs/api/authentication/reference#change-password).
* Vous pouvez étendre le flux de réinitialisation du mot de passe pour inclure un autre facteur avec les Actions Auth0. Pour en savoir plus, consultez [Flux de réinitialisation du mot de passe](/fr-CA/docs/customize/actions/explore-triggers/password-reset-triggers).

Avec [Classic Login](/fr-CA/docs/authenticate/login/auth0-universal-login/universal-login-vs-classic-login/classic-experience), vous pouvez configurer une URL vers laquelle rediriger les utilisateurs après la réinitialisation du mot de passe. L’URL reçoit un indicateur de réussite et un message. Pour en savoir plus, consultez la section « Configuring the Redirect-To URL » dans [Personnaliser les modèles de courriel](/fr-CA/docs/customize/email/email-templates).

[Universal Login](/fr-CA/docs/authenticate/login/auth0-universal-login/universal-login-vs-classic-login/universal-experience) redirige l’utilisateur vers la [route de connexion par défaut](/fr-CA/docs/authenticate/login/auth0-universal-login/configure-default-login-routes) en cas de réussite et gère les cas d’erreur dans le cadre du flux Universal Login. Cette expérience ignore l’URL de redirection dans le modèle de courriel.

<Card title="Générer des tickets de réinitialisation du mot de passe">
  La Management API fournit le point de terminaison [Créer un ticket de changement de mot de passe](https://auth0.com/docs/api/management/v2#!/Tickets/post_password_change), qui génère une URL semblable à celle du courriel de réinitialisation du mot de passe. Vous pouvez utiliser l’URL générée lorsque l’envoi par courriel n’est pas approprié. Gardez à l’esprit que, dans le flux par défaut, l’envoi du courriel vérifie l’identité de l’utilisateur. (Un imposteur n’aurait pas accès à la boîte de réception.) Si vous utilisez l’URL du ticket, votre application doit vérifier l’identité de l’utilisateur d’une autre façon.
</Card>

<div id="directly-set-the-new-password">
  ## Définir directement un nouveau mot de passe
</div>

Pour définir directement un nouveau mot de passe pour l’utilisateur sans envoyer de courriel de réinitialisation, utilisez soit la [Management API](#use-the-management-api), soit l’[Auth0 Dashboard](#manually-set-users-passwords-using-the-auth0-dashboard).

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les utilisateurs ne reçoivent aucune notification lorsque vous modifiez leur mot de passe.
</Callout>

<div id="use-the-management-api">
  ### Utiliser la Management API
</div>

Si vous souhaitez mettre en place votre propre flux de réinitialisation de mot de passe, vous pouvez modifier directement le mot de passe d’un utilisateur au moyen d’une requête serveur adressée à la Management API : effectuez un appel `PATCH` au point de terminaison [Update a User endpoint](https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id).

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Si vous utilisez la Management API pour définir ou mettre à jour le mot de passe d’un utilisateur au moyen du point de terminaison [Update a User endpoint](https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id), la politique de robustesse que vous définissez dans Auth0 Dashboard s’applique.
</Callout>

<AuthCodeGroup>
  ```bash cURL theme={null}
  curl --request PATCH \
    --url 'https://{yourDomain}/api/v2/users/%7BuserId%7D' \
    --header 'authorization: Bearer {yourMgmtApiAccessToken}' \
    --header 'content-type: application/json' \
    --data '{"password": "newPassword","connection": "connectionName"}'
  ```

  ```csharp C# theme={null}
  var client = new RestClient("https://{yourDomain}/api/v2/users/%7BuserId%7D");
  var request = new RestRequest(Method.PATCH);
  request.AddHeader("content-type", "application/json");
  request.AddHeader("authorization", "Bearer {yourMgmtApiAccessToken}");
  request.AddParameter("application/json", "{"password": "newPassword","connection": "connectionName"}", ParameterType.RequestBody);
  IRestResponse response = client.Execute(request);
  ```

  ```go Go theme={null}
  package main

  import (
  	"fmt"
  	"strings"
  	"net/http"
  	"io/ioutil"
  )

  func main() {

  	url := "https://{yourDomain}/api/v2/users/%7BuserId%7D"

  	payload := strings.NewReader("{"password": "newPassword","connection": "connectionName"}")

  	req, _ := http.NewRequest("PATCH", url, payload)

  	req.Header.Add("content-type", "application/json")
  	req.Header.Add("authorization", "Bearer {yourMgmtApiAccessToken}")

  	res, _ := http.DefaultClient.Do(req)

  	defer res.Body.Close()
  	body, _ := ioutil.ReadAll(res.Body)

  	fmt.Println(res)
  	fmt.Println(string(body))

  }
  ```

  ```java Java theme={null}
  HttpResponse<String> response = Unirest.patch("https://{yourDomain}/api/v2/users/%7BuserId%7D")
    .header("content-type", "application/json")
    .header("authorization", "Bearer {yourMgmtApiAccessToken}")
    .body("{"password": "newPassword","connection": "connectionName"}")
    .asString();
  ```

  ```javascript Node.JS theme={null}
  var axios = require("axios").default;

  var options = {
    method: 'PATCH',
    url: 'https://{yourDomain}/api/v2/users/%7BuserId%7D',
    headers: {
      'content-type': 'application/json',
      authorization: 'Bearer {yourMgmtApiAccessToken}'
    },
    data: {password: 'newPassword', connection: 'connectionName'}
  };

  axios.request(options).then(function (response) {
    console.log(response.data);
  }).catch(function (error) {
    console.error(error);
  });
  ```

  ```php PHP theme={null}
  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://{yourDomain}/api/v2/users/%7BuserId%7D",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "PATCH",
    CURLOPT_POSTFIELDS => "{"password": "newPassword","connection": "connectionName"}",
    CURLOPT_HTTPHEADER => [
      "authorization: Bearer {yourMgmtApiAccessToken}",
      "content-type: application/json"
    ],
  ]);

  $response = curl_exec($curl);
  $err = curl_error($curl);

  curl_close($curl);

  if ($err) {
    echo "cURL Error #:" . $err;
  } else {
    echo $response;
  }
  ```

  ```python Python theme={null}
  import http.client

  conn = http.client.HTTPSConnection("")

  payload = "{"password": "newPassword","connection": "connectionName"}"

  headers = {
      'content-type': "application/json",
      'authorization': "Bearer {yourMgmtApiAccessToken}"
      }

  conn.request("PATCH", "/{yourDomain}/api/v2/users/%7BuserId%7D", payload, headers)

  res = conn.getresponse()
  data = res.read()

  print(data.decode("utf-8"))
  ```

  ```ruby Ruby theme={null}
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://{yourDomain}/api/v2/users/%7BuserId%7D")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Patch.new(url)
  request["content-type"] = 'application/json'
  request["authorization"] = 'Bearer {yourMgmtApiAccessToken}'
  request.body = "{"password": "newPassword","connection": "connectionName"}"

  response = http.request(request)
  puts response.read_body
  ```
</AuthCodeGroup>

<div id="manually-set-users-passwords-using-the-auth0-dashboard">
  ### Définir manuellement les mots de passe des utilisateurs dans Auth0 Dashboard
</div>

Toute personne disposant de privilèges administratifs sur votre locataire Auth0 peut modifier manuellement le mot de passe d’un utilisateur dans [Auth0 Dashboard > User Management > Users](https://manage.auth0.com/#/users).

1. Sélectionnez le nom de l’utilisateur dont vous souhaitez modifier le mot de passe.
2. Repérez la section **Danger Zone** au bas de la page.
3. Dans l’encadré rouge **Change Password**, sélectionnez **Change**.

   <Frame>
     <img src="https://mintcdn.com/translations/MV7tE-x71x8RWRES/docs/images/cdy7uua7fh8z/5mrEG3UtlZW47AnTikwIGv/94d186b748a53c13145388fa281af8c4/dashboard-users-edit_view-details_danger-zone__1_.png?fit=max&auto=format&n=MV7tE-x71x8RWRES&q=85&s=ce08a4f3e7a9e16082bcdc587e8a6837" alt="Définir manuellement le mot de passe" width="899" height="320" data-path="docs/images/cdy7uua7fh8z/5mrEG3UtlZW47AnTikwIGv/94d186b748a53c13145388fa281af8c4/dashboard-users-edit_view-details_danger-zone__1_.png" />
   </Frame>
4. Saisissez le nouveau mot de passe, puis sélectionnez **Save**.
