我无法找到为身份.net核心禁用自动哈希密码的方式。 因为这段代码自动散列密码:如何禁用身份.net核心的自动哈希密码
var result = await _userManager.CreateAsync(user, model.Password);
我无法找到为身份.net核心禁用自动哈希密码的方式。 因为这段代码自动散列密码:如何禁用身份.net核心的自动哈希密码
var result = await _userManager.CreateAsync(user, model.Password);
你可以编写覆盖UserManager
public class ApplicationUserManager : UserManager<IdentityUser>
{
public ApplicationUserManager(IUserStore<IdentityUser> store)
: base(store)
{
this.PasswordHasher = new CustomPasswordHasher();
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new UserStore<IdentityUser>(context.Get<ApplicationDbContext>()));
manager.PasswordHasher = new CustomPasswordHasher();
}
}
一类,然后覆盖PasswordHasher
与继承PasswordHasher
一个新的自定义散列器类。
internal class CustomPasswordHasher : PasswordHasher
{
public override string HashPassword(string password)
{
return password;
//return Crypto.Sha1.Encrypt(password);
}
public override PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword)
{
//var testHash = Crypto.Sha1.Encrypt(providedPassword);
return hashedPassword.Equals(testHash) || hashedPassword.Equals(providedPassword) ? PasswordVerificationResult.Success : PasswordVerificationResult.Failed;
}
}
最后,请记住,这样做会导致数据库用户的安全性丧失。
告诉某人如何导致密码破坏不是一个好主意。这相当于向某人解释如何自杀。是的,他确实问过,那是什么? –
我了解安全。它只需要客户。 您的代码有一些问题。没有看到这个类:IdentityFactoryOptions和IOwinContext。 –
@ DmitryVasilyukJust3F您的客户已经在黑客名单中。将SO帐户名称追溯到公司及其客户并不困难。如果您坚持禁用密码安全性,请绝对确保客户在发生数据泄露时免除责任。是不是一个不安全的密码重置机制对他们有价值? –
由于Asp.NET核心MVC使用依赖注入来设置标识,所有你需要的仅仅是创建密码哈希类的替代:
public class CustomPasswordHasher : IPasswordHasher<AppUser>
{
public string HashPassword(AppUser user, string password)
{
return password;
}
public PasswordVerificationResult VerifyHashedPassword(AppUser user, string hashedPassword, string providedPassword)
{
return hashedPassword.Equals(providedPassword) ? PasswordVerificationResult.Success : PasswordVerificationResult.Failed;
}
}
,并添加:
services.AddScoped<IPasswordHasher<AppUser>, CustomPasswordHasher>();
你mvc app statup.cs
为什么要禁用它?密码应该**总是**被散列。 – DavidG
您是否真的想将所有密码公开给黑客并成为下一次公开数据泄露?你确定你的公司能活下来吗? –
你是否试图执行密码恢复?这是非常不安全的,这就是为什么它不再在.NET中可用,而不仅仅是.NET Core。现今使用的最低限度是密码重置。 –