Actualmente estoy intentando mejorar nuestra API para que sea más tranquila, por lo tanto, evito cualquier estado en el servidor. Quiero lograr esto con un token hmac, que se adjunta en cada solicitud. El hmac se realizará con la siguiente parte de datos: host, método de solicitud, uri de solicitud, marca de tiempo (para evitar repeticiones) y en el caso de POST / PUT también el cuerpo de la solicitud. ¿Alguna objeción contra esto?
Enviaré el hmac junto con el nombre de usuario o tal vez una representación hash (clave pública) del usuario para poder tener diferentes claves secretas para cada usuario en el servidor.
Ahora estoy planeando el intercambio de clave secreta entre el cliente (JavaScript) y el servidor (PHP) y tengo la idea de simplemente usar algo que el servidor y el cliente ya saben sin intercambiarlo y aún debería ser diferente para cada usuario.
Entonces, ¿por qué no usar la contraseña hash del usuario como clave secreta? El servidor tiene el hash de la contraseña guardada en la base de datos junto al usuario en la tabla de usuario de cualquier manera y el cliente puede calcular el hash basándose en la entrada del usuario y almacenarlo en una sesión del cliente para su uso posterior.
¿Cuáles son las preocupaciones sobre el uso de la contraseña de usuario con hash como clave secreta?