Utilisateurs non authentifiés
Nous faisons une PUT
demande sur un api/v1/account/password
point de terminaison et avons besoin d'un paramètre avec l'e-mail de compte correspondant pour identifier le compte pour lequel l'utilisateur souhaite réinitialiser (mettre à jour) le mot de passe:
PUT : /api/v1/account/password?email={email@example.com}
Remarque: comme @DougDomeny l'a mentionné dans son commentaire, transmettre l'e-mail en tant que chaîne de requête dans l'url est un risque de sécurité. Les paramètres GET ne sont pas exposés lors de l'utilisation https
(et vous devez toujours utiliser une https
connexion appropriée pour de telles demandes), mais d'autres risques de sécurité sont impliqués. Vous pouvez en savoir plus sur ce sujet dans cet article de blog ici .
Passer l'e-mail dans le corps de la requête serait une alternative plus sûre que de le transmettre en tant que paramètre GET:
PUT : /api/v1/account/password
Demander le corps:
{
"email": "email@example.com"
}
La réponse a une signification de réponse 202
acceptée :
La demande a été acceptée pour traitement, mais le traitement n'est pas terminé. La demande peut éventuellement être traitée ou non, car elle peut être refusée lorsque le traitement a effectivement lieu. Il n'y a aucune possibilité de renvoyer un code d'état à partir d'une opération asynchrone comme celle-ci.
L'utilisateur recevra un e-mail à email@example.com
et le traitement de la demande de mise à jour dépend des actions entreprises avec le lien de l'e-mail.
https://example.com/password-reset?token=1234567890
L'ouverture du lien à partir de cet e-mail dirigera vers un formulaire de réinitialisation de mot de passe sur l'application frontale qui utilise le jeton de réinitialisation du mot de passe du lien comme entrée pour un champ de saisie masqué (le jeton fait partie du lien en tant que chaîne de requête). Un autre champ de saisie permet à l'utilisateur de définir un nouveau mot de passe. Une deuxième entrée pour confirmer le nouveau mot de passe sera utilisée pour la validation sur le front-end (pour éviter les fautes de frappe).
Remarque: dans l'e-mail, nous pourrions également mentionner que si l'utilisateur n'a initialisé aucune réinitialisation de mot de passe, il peut ignorer l'e-mail et continuer à utiliser l'application normalement avec son mot de passe actuel.
Lorsque le formulaire est soumis avec le nouveau mot de passe et le jeton comme entrées, le processus de réinitialisation du mot de passe aura lieu. Les données du formulaire seront à nouveau envoyées avec une PUT
demande, mais cette fois avec le jeton et nous remplacerons le mot de passe de la ressource par une nouvelle valeur:
PUT : /api/v1/account/password
Demander le corps:
{
"token":"1234567890",
"new":"password"
}
La réponse sera une réponse 204
sans contenu
Le serveur a répondu à la demande mais n'a pas besoin de renvoyer un corps d'entité et peut souhaiter renvoyer des méta-informations mises à jour. La réponse PEUT inclure des méta-informations nouvelles ou mises à jour sous la forme d'en-têtes d'entité, qui, s'ils sont présents, DEVRAIENT être associés à la variante demandée.
Utilisateurs authentifiés
Pour les utilisateurs authentifiés qui souhaitent modifier leur mot de passe, la PUT
demande peut être effectuée immédiatement sans l'e-mail (le compte pour lequel nous mettons à jour le mot de passe est connu du serveur). Dans ce cas, le formulaire soumettra deux champs:
PUT : /api/v1/account/password
Demander le corps:
{
"old":"password",
"new":"password"
}