Primero, algunas cosas:
- No hay un secreto compartido en respuesta de Thomas Pornins a la pregunta vinculada. El servidor usa un secreto que solo sabe para calcular el HMAC. Luego, el cliente obtiene ese HMAC y lo envía al servidor en cada pedido como un token de autenticación. El servidor puede verificarlo recalcularlo con el secreto de los servidores. Tenga en cuenta que el cliente nunca calcula un HMAC.
- En lugar de implementar esto usted mismo, es probable que desee utilizar una solución existente, como JWT.
Pero aún así, el HMAC o JWT o lo que sea, deben mantenerse seguros del lado del cliente. Personalmente, lo puse en un almacenamiento local, pero una cookie también podría funcionar. Se descartan estos ya que son vulnerables a las "fugas". Puede ser cierto que el malware que se ejecuta como root, o alguien con acceso físico, podría robar estos. Eso es un riesgo Pero aquí está la cuestión: todos los sistemas de inicio de sesión, desde los identificadores de sesión antiguos hasta los JWT modernos, funcionan al permitir que el cliente almacene un secreto. Si no puede aceptar ese riesgo, no puede iniciar sesión y necesitará que el usuario vuelva a escribir la contraseña en cada solicitud. (Pero quién sabe, el malware que puede leer el almacenamiento local también podría leer las pulsaciones de teclado ...)
No estoy seguro de lo que quieres decir con el uso de un nuevo secreto para cada viaje de ida y vuelta, pero no pudo resolver el problema anterior. En la primera solicitud, el cliente se autentica con una contraseña y obtiene un secreto que puede usar para la autenticación futura a cambio. En la siguiente solicitud, el cliente debe autenticarse nuevamente. O bien, ha guardado el secreto y puede usar eso. O no, y luego el usuario tiene que volver a escribir la contraseña.