> ## 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 les mots de passe des utilisateurs pour vos applications Auth0.

# Changer 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) + "*****MASQUÉ*****";
          }
          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](/docs/fr-ca/authenticate/database-connections). Les utilisateurs qui se connectent avec des connexions [sociales](/docs/fr-ca/authenticate/identity-providers/social-identity-providers) ou [d’entreprise](/docs/fr-ca/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="/docs/fr-ca/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. Ce 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 permettant aux clients d’effectuer des tâches administratives." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Management+API">Management API</Tooltip> d’Auth0 ou d’<Tooltip tip="Management API : un produit permettant aux clients d’effectuer des tâches administratives." cta="Voir le glossaire" href="/docs/fr-ca/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 Password Reset personnalisée, consultez [Customize Password Reset Page](/docs/fr-ca/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](/docs/fr-ca/customize/actions/explore-triggers/password-reset-triggers/post-change-password-trigger).
  * Pour réinitialiser le mot de passe de votre compte d’utilisateur Auth0 personnel, consultez [Reset Account Passwords](/docs/fr-ca/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 : au moyen de la page <Tooltip tip="Universal Login : votre application redirige vers Universal Login, hébergée sur le serveur d’autorisation d’Auth0, afin de vérifier l’identité d’un utilisateur." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Universal+Login">Universal Login</Tooltip> ou de l’Authentication API.

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

Si votre application utilise Universal Login, l’utilisateur peut utiliser le 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 entrer son adresse courriel. Cela envoie une requête POST à 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">
  ### Authentication API
</div>

Si votre application utilise un flux interactif de réinitialisation du mot de passe avec l’Authentication API, faites une requête `POST`. Dans le champ `email`, entrez l’adresse courriel de l’utilisateur qui doit changer son mot de passe. Si la requête réussit, l’utilisateur [reçoit un courriel de réinitialisation du mot de passe](#password-reset-email).

Si vous appelez l’API depuis le 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 votre connexion est une base de données personnalisée, vérifiez d’abord si l’utilisateur existe dans la base de données avant d’appeler l’Authentication API 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_PEER

  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 la façon dont le processus de réinitialisation du mot de passe a été déclenché, l’utilisateur reçoit un courriel contenant un lien pour 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](/docs/fr-ca/customize/login-pages/classic-login/customize-password-reset-page).

Après avoir envoyé son 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 que pour une seule utilisation.
* 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 Change Password](/docs/fr-ca/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 password reset flow pour y inclure un autre facteur avec Auth0 Actions. Pour en savoir plus, consultez [Password Reset Flow](/docs/fr-ca/customize/actions/explore-triggers/password-reset-triggers).

Avec [Classic Login](/docs/fr-ca/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. Cette 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](/docs/fr-ca/customize/email/email-templates).

[Universal Login](/docs/fr-ca/authenticate/login/auth0-universal-login/universal-login-vs-classic-login/universal-experience) redirige l’utilisateur vers la [route de connexion par défaut](/docs/fr-ca/authenticate/login/auth0-universal-login/configure-default-login-routes) lorsque l’opération réussit, 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 endpoint [Create a Password Change Ticket](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 le mode d’envoi du courriel n’est pas approprié. Gardez à l’esprit que, dans le flux par défaut, l’envoi du courriel permet de vérifier 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 de mot de passe, 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 œuvre votre propre flux de réinitialisation de mot de passe, vous pouvez modifier directement le mot de passe d’un utilisateur à partir d’une requête serveur adressée à la Management API : effectuez une requête `PATCH` vers le [point de terminaison Update a User](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](https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id), la politique de robustesse que vous définissez dans l’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_PEER

  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 l’Auth0 Dashboard
</div>

Toute personne ayant des privilèges administratifs sur votre tenant 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 voulez 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 un 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**.
