Usuarios no autenticados
Hacemos una PUT
solicitud en un api/v1/account/password
endpoint y requerimos un parámetro con el correo electrónico de la cuenta correspondiente para identificar la cuenta para la cual el usuario desea restablecer (actualizar) la contraseña:
PUT : /api/v1/account/password?email={email@example.com}
Nota: Como @DougDomeny mencionó en su comentario, pasar el correo electrónico como una cadena de consulta en la URL es un riesgo de seguridad. Los parámetros GET no se exponen al usarlos https
(y siempre debe usar una https
conexión adecuada para tales solicitudes), pero existen otros riesgos de seguridad involucrados. Puede leer más sobre este tema en esta publicación de blog aquí .
Pasar el correo electrónico en el cuerpo de la solicitud sería una alternativa más segura que pasarlo como un parámetro GET:
PUT : /api/v1/account/password
Cuerpo de la solicitud:
{
"email": "email@example.com"
}
La respuesta tiene un significado de respuesta 202
aceptado :
La solicitud ha sido aceptada para su procesamiento, pero el procesamiento no se ha completado. La solicitud podría o no eventualmente ser atendida, ya que podría ser rechazada cuando el procesamiento realmente tenga lugar. No existe la posibilidad de volver a enviar un código de estado desde una operación asincrónica como esta.
El usuario recibirá un correo electrónico en email@example.com
y el procesamiento de la solicitud de actualización depende de las acciones tomadas con el enlace del correo electrónico.
https://example.com/password-reset?token=1234567890
Al abrir el enlace de este correo electrónico, se dirigirá a un formulario de restablecimiento de contraseña en la aplicación de interfaz que utiliza el token de restablecimiento de contraseña del enlace como entrada para un campo de entrada oculto (el token es parte del enlace como una cadena de consulta). Otro campo de entrada permite al usuario establecer una nueva contraseña. Una segunda entrada para confirmar la nueva contraseña se utilizará para la validación en el front-end (para evitar errores tipográficos).
Nota: En el correo electrónico también podríamos mencionar que en caso de que el usuario no haya inicializado ningún restablecimiento de contraseña, puede ignorar el correo electrónico y seguir usando la aplicación normalmente con su contraseña actual.
Cuando el formulario se envía con la nueva contraseña y el token como entradas, se llevará a cabo el proceso de restablecimiento de contraseña. Los datos del formulario se enviarán con una PUT
solicitud nuevamente, pero esta vez incluyendo el token y reemplazaremos la contraseña del recurso con un nuevo valor:
PUT : /api/v1/account/password
Cuerpo de la solicitud:
{
"token":"1234567890",
"new":"password"
}
La respuesta será una respuesta 204
sin contenido.
El servidor ha cumplido la solicitud, pero no necesita devolver un cuerpo de entidad y es posible que desee devolver metainformación actualizada. La respuesta PUEDE incluir metainformación nueva o actualizada en forma de encabezados de entidad, que si están presentes DEBERÍAN estar asociados con la variante solicitada.
Usuarios autenticados
Para los usuarios autenticados que desean cambiar su contraseña, la PUT
solicitud se puede realizar de inmediato sin el correo electrónico (el servidor conoce la cuenta para la que estamos actualizando la contraseña). En tal caso, el formulario enviará dos campos:
PUT : /api/v1/account/password
Cuerpo de la solicitud:
{
"old":"password",
"new":"password"
}