passwordhasher passwordhash password net hashpassword example encrypt asp c# asp.net-mvc-5 password-protection asp.net-identity

net - passwordhash c#



Manual de Identidad ASP.Net Hashing de ContraseƱa (1)

Después de crear la instancia de UserManager, asigne la propiedad passwordhasher a su CustomPasswordHasher

UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(store); UserManager.PasswordHasher = new CustomPasswordHasher(); // IPasswordHasher

Utilice el UserManager para encontrar usuarios con nombre de usuario y contraseña.

Estoy desarrollando una aplicación web MVC 5 utilizando el enfoque Entity Framework Database First con una base de datos existente .

También estoy usando ASP.Net Identity para mi Autorización y Autenticación, sin embargo, no estoy usando el código Entity Framework incorporado, es decir, UserManager , ApplicationUser , etc. en lugar de eso estoy usando un enfoque similar a este de Brock Allen.

http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/

Ahora estoy trabajando en el inicio de sesión y el registro de la cuenta y quiero hacer un hash de la contraseña del usuario antes de almacenarla en mi tabla de usuario personalizada.

Me doy cuenta de que puedo crear mi propia clase personalizada que implementa IPasswordHasher , sin embargo, ahí es donde me quedo atascado. A continuación se muestra una maqueta de cómo creo que debería funcionar, sin embargo, no estoy completamente seguro de que esto sea correcto.

public class CustomPassword : IPasswordHasher { public string HashPassword(string password) { return password; } public PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword) { if (hashedPassword.Equals(providedPassword)) return PasswordVerificationResult.Success; else return PasswordVerificationResult.Failed; } }

Estas son mis preguntas:

P1 : Al registrar una nueva cuenta de usuario y pasar la contraseña de usuario al método HashPassword desde mi Controlador de cuentas, de esta forma, me gustaría que la contraseña de usuario estuviera marcada y devuelta como una cadena, sin embargo, no sé qué código colocar en la función HashPassword para hacer esto.

CustomPassword pwd = new CustomPassword(); String UserPassword = "test@123"; String HashedNewPassword = pwd.HashPassword(UserPassword);

P2 : Cuando un usuario inicia sesión en el sitio web, me gustaría tomar la contraseña suministrada, recuperar la contraseña de hash de la tabla de usuarios de la base de datos y luego compararla con el método VerifyHashedPassword , pero nuevamente, no sé cuál es el código es comparar una cadena con hash contra una cadena sin hash.

Apreciaría mucho cualquier consejo sobre cómo hacer esto.

Gracias.