【问题标题】:Hashing user password - Identity Server散列用户密码 - 身份服务器
【发布时间】:2022-01-11 10:13:11
【问题描述】:

我目前正在使用 Identity Server 4,目前当用户登录时,我需要对他们提供的密码进行哈希处理,然后与存储在数据库中的密码进行比较(也进行哈希处理)

经过一番搜索,我被链接到 Identity Server 中的 PasswordHasher 来处理这个问题:

  var _hasher = new PasswordHasher<User>();
  var hashpassword = _hasher.HashPassword(user, context.Password);

User 是我的自定义类,它继承自 IdentityUser,但是,当检查哈希密码与数据库中的密码完全不同时,我已经仔细检查了密码,我可以确认它是正确的。

谁能说明为什么我看到的哈希值可能与数据库中的哈希值不同?

【问题讨论】:

  • 你是如何对数据库中已有的密码进行哈希处理的?
  • 使用 await _userManager.CreateAsync(user, "Password1!"); 时自动完成的;
  • 使用_userManager.PasswordHasher 而不是实例化一个新的。 IPasswordHasher 是一个接口,因此 UserManager 可能与您使用的实现不同,如果是,它可能会指定不同的属性,例如散列算法和迭代次数

标签: c# identityserver4 password-hash


【解决方案1】:

每次使用PasswordHasher&lt;T&gt;.HashPassword 对密码进行哈希处理时,您都会得到完全不同的结果,因为salt

要验证这种散列加盐密码,请使用给定的方法IPasswordHasher&lt;T&gt;.VerifyPassword

【讨论】:

  • 工作完美,感谢 Rufo 爵士。
猜你喜欢
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 2018-08-02
相关资源
最近更新 更多