Estoy implementando ASP.NET Core Identity con IdentityServer4. Una característica es el restablecimiento de la contraseña, y encontré que todos los ejemplos (por ejemplo, Inicio rápido de IdentityServer4 y el ejemplo de identidad de ASP.NET ) tiende a hacer esto:
- El token de restablecimiento de contraseña ("Código") se pasa a la página a través de la URL en el correo electrónico y se publica "mágicamente" a lo largo de la nueva contraseña.
- El formulario (además de una nueva contraseña, por supuesto) requiere que completes una dirección de correo electrónico .
Esto es necesario porque necesitas un ApplicationUser
cuando usas un token de restablecimiento de contraseña, que solo puedes obtener con elementos como UserId
, Name
y Email
.
He visto muchos sitios (algunos de los principales) que solo requieren la nueva contraseña y no correo electrónico. Dado que solo puede recibir un token de restablecimiento de contraseña a través del correo electrónico, es un poco tonto pedirle a un usuario que vuelva a ingresar su correo electrónico ( "Acabo de hacer clic en un enlace en mi buzón, ¿por qué me pregunta por mi correo electrónico? ¿Dirección de correo electrónico? ").
¿Cuál es la razón aquí? Tengo la tentación de incluir UserId
en la URL de restablecimiento de la contraseña y también incluirla automáticamente en el formulario para publicar una nueva contraseña, pero dado que todos los ejemplos principales piden una dirección de correo electrónico, estoy cuestionando: ¿cuál sería? ¿Las implicaciones de seguridad de eso?