【问题标题】:Does asp.net identity 2.0 hash passwords differently than 1.0?asp.net identity 2.0 哈希密码与 1.0 不同吗?
【发布时间】:2014-06-03 23:59:50
【问题描述】:

我刚刚将我的应用程序从 asp.net identity 1.0 更新到 2.0,以利用电子邮件确认、双因素身份验证等...

但是,用户现在无法登录。似乎await UserManager.FindAsync(model.UserName, model.Password); 没有找到以身份 1.0 注册的现有用户...但在身份 2.0 期间注册的用户工作正常。

【问题讨论】:

  • 哈希应该相同,身份 1 和 2 都使用 System.Security.Cryptography.Rfc2898DeriveBytes 对密码进行哈希处理,这是遵循严格的 OWASP 准则的哈希+盐方法。
  • 不仅如此,哈希的存储方式是,即使添加或更改了新的哈希算法,旧的算法仍然可以用于匹配密码。所以很明显这里肯定还有另一个问题。也许你应该让用户重置他们的密码。
  • 谢谢,我正在深入研究这个问题。我认为这可能与新的 RavenDB 身份提供程序存储ApplicationUser 的方式有关。仍然很高兴知道跨版本的 asp.net 身份哈希相同。

标签: c# asp.net asp.net-identity


【解决方案1】:

哈希是完全一样的。
Identity 2.0 UserManager.FindAsync(UserName, Password) 可以为使用 Identity 1.0 注册的用户返回 null。 AspNetUsers 表中有一些新字段是强制性的 - NOT NULL。
最可能的原因是AccessFailedCount 字段。如果它为空,您不会看到任何异常,只有空用户。

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 2016-09-16
    • 2023-03-15
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2014-05-16
    • 2013-05-19
    相关资源
    最近更新 更多