Modifier les mots de passe utilisateur

Overview

Principaux concepts

  • Déclenchez la réinitialisation des mots de passe à l’aide du Auth0 Dashboard ou de Management API.

Cette rubrique décrit les différentes manières de réinitialiser le mot de passe d’un utilisateur dans votre base de données. Vous pouvez modifier les mots de passe des utilisateurs de vos connexions aux bases de données uniquement. Les utilisateurs qui se connectent avec des connexions via réseau social ou d’entreprise doivent réinitialiser leurs mots de passe auprès du fournisseur d’identité (p. ex., 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éactivation de mot de passe qui envoie à l’utilisateur un lien par courriel. Le lien ouvre la page de réinitialisation du mot de passe Auth0 où l’utilisateur peut saisir un nouveau mot de passe.

  • Changer le mot de passe directement à l’aide de Auth0 Management API ou du Auth0 Dashboard.

Vous ne trouvez pas ce que vous cherchez?

Déclencher un flux interactif de réinitialisation du mot de passe

Il existe deux façons de déclencher un flux de réinitialisation de mot de passe interactif, en fonction de votre cas d’utilisation : par l’intermédiaire de la page de connexion universelle ou de l’Authentication API.

Page de Universal Login (Connexion universelle)

Si votre application utilise la connexion universelle, l’utilisateur peut utiliser le gadget logiciel Lock sur l’écran de Connexion pour déclencher un courriel de réinitialisation du mot de passe. Avec la connexion universelle, l’utilisateur peut cliquer sur le lien Don’t remember your password? (Vous avez oublié votre mot de passe?) et saisir son adresse courriel. Cette opération déclenche une requête POST vers Auth0 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.

Authentication API

Si votre application utilise un flux de réinitialisation de mot de passe interactif via Authentication API, 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 aboutit, l’utilisateur reçoit un courriel de réinitialisation du mot de passe.

Si vous faites une requête à l’API à partir du navigateur, assurez-vous que l’URL d’origine est autorisée :

Allez dans Auth0 Dashboard > Applications > Applications, et ajoutez l’URL à la liste Allowed Origins (Origines autorisées).

Si votre connexion est une base de données personnalisée, vérifiez que l’utilisateur existe dans la base de données avant d’invoquer Authentication API pour changePassword.


curl --request POST \
  --url 'https://{yourDomain}/dbconnections/change_password' \
  --header 'content-type: application/json' \
  --data '{"client_id": "{yourClientId}","email": "","connection": "Username-Password-Authentication"}'

Was this helpful?

/
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);

Was this helpful?

/
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))

}

Was this helpful?

/
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();

Was this helpful?

/
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);
});

Was this helpful?

/
#import <Foundation/Foundation.h>

NSDictionary *headers = @{ @"content-type": @"application/json" };
NSDictionary *parameters = @{ @"client_id": @"{yourClientId}",
                              @"email": @"",
                              @"connection": @"Username-Password-Authentication" };

NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/dbconnections/change_password"]
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                if (error) {
                                                    NSLog(@"%@", error);
                                                } else {
                                                    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
                                                    NSLog(@"%@", httpResponse);
                                                }
                                            }];
[dataTask resume];

Was this helpful?

/
$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;
}

Was this helpful?

/
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"))

Was this helpful?

/
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

Was this helpful?

/
import Foundation

let headers = ["content-type": "application/json"]
let parameters = [
  "client_id": "{yourClientId}",
  "email": "",
  "connection": "Username-Password-Authentication"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/dbconnections/change_password")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Was this helpful?

/

Courriel de réinitialisation du mot de passe

Quelle que soit la manière par laquelle 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.

Password Reset Email

En cliquant sur le lien, l’utilisateur est redirigé vers la password reset page (page de réinitialisation de mot de passe).

Après avoir soumis le nouveau mot de passe, l’utilisateur reçoit la confirmation qu’il peut désormais se connecter avec ses nouveaux identifiantsé

Notes sur la réinitialisation des mots de passe :

Avec l’expérience Classic Login (Connexion classique), vous pouvez configurer une URL pour 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 « Configuring the Redirect-To URL (Configuration de la redirection vers une URL) » dans Customize Email Templates (Personnaliser les modèles de courriel).

La page Universal Login (Connexion universelle) redirige l’utilisateur vers le default login route (chemin de connexion par défaut) en cas de succès et traite les cas d’erreur dans le cadre du flux de connexion universelle. Cette expérience ignore la Redirect URL (URL de redirection) dans le modèle de courriel.

Générer des tickets de réinitialisation de mots de passe

Management API fournit le point de terminaison Créer un ticket de modification de mot de passe, ce qui génère une URL comme celle dans le courriel de réinitialisation de mot de passe. Vous pouvez utiliser l’URL générée lorsque la méthode de livraison par courriel n’est pas appropriée. Gardez en tête que dans le flux par défaut, la livraison par courriel vérifie l’identité de l’utilisateur. (Un imposteur n’aurait pas accès à la boîte courriel.) Si vous utilisez l’URL de ticket, votre application doit vérifier l’identité de l’utilisateur d’une autre manière.

Définir directement le nouveau mot de passe

Pour définir directement un nouveau mot de passe pour l’utilisateur sans envoyer de courriel de réinitialisation de mot de passe, utilisez Management API ou Auth0 Dashboard.

Utiliser Management API (API gestion)

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 de serveur vers Management API : effectuez un appel PATCH vers le point de terminaison Update a User (Mettre à jour un utilisateur).


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"}'

Was this helpful?

/
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);

Was this helpful?

/
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))

}

Was this helpful?

/
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();

Was this helpful?

/
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);
});

Was this helpful?

/
#import <Foundation/Foundation.h>

NSDictionary *headers = @{ @"content-type": @"application/json",
                           @"authorization": @"Bearer {yourMgmtApiAccessToken}" };
NSDictionary *parameters = @{ @"password": @"newPassword",
                              @"connection": @"connectionName" };

NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/users/%7BuserId%7D"]
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:10.0];
[request setHTTPMethod:@"PATCH"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                if (error) {
                                                    NSLog(@"%@", error);
                                                } else {
                                                    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
                                                    NSLog(@"%@", httpResponse);
                                                }
                                            }];
[dataTask resume];

Was this helpful?

/
$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;
}

Was this helpful?

/
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"))

Was this helpful?

/
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

Was this helpful?

/
import Foundation

let headers = [
  "content-type": "application/json",
  "authorization": "Bearer {yourMgmtApiAccessToken}"
]
let parameters = [
  "password": "newPassword",
  "connection": "connectionName"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/users/%7BuserId%7D")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Was this helpful?

/

Définir manuellement les mots de passe des utilisateurs à l’aide d’Auth0 Dashboard

Toute personne disposant de privilèges administratifs sur votre locataire Auth0 peut modifier manuellement le mot de passe d’un utilisateur en utilisant Auth0 Dashboard > User Management (Gestion des utilisateurs) > Users (Utilisateurs).

  1. Sélectionnez le nom de l’utilisateur dont vous souhaitez modifier le mot de passe.

  2. Localisez la Danger Zone (Zone de danger) au bas de la page.

  3. Dans la zone rouge Change Password (Modifier le mot de passe), sélectionnez Change (Modifier).

    Dashboard > User Management > Users.
  4. Saisissez le nouveau mot de passe et sélectionnez Save (Enregistrer).