【问题标题】:How to set password rules for ASP.NET identity?如何为 ASP.NET 身份设置密码规则?
【发布时间】:2013-11-01 01:33:26
【问题描述】:

在我的 ASP.NET 应用程序中,我在 web.config 中的 DefaultMembershipProvider 和 SqlMembershipProvider 中有以下设置:

enablePasswordRetrieval="true"
passwordFormat="Clear" 
requiresQuestionAndAnswer="false" 

摘要式身份验证需要它们。我想迁移到 ASP.NET Identity。我正在使用自动化工具来更新我管理的所有 web.config 文件。

如何在 Visual Studio 2013 生成的项目中为 ASP.NET Identity 设置这些设置?

【问题讨论】:

  • 密码检索需要双向加密,然后以纯文本形式传递凭据,从而大大增加了应用程序的弱点。如果可能,请考虑通过电子邮件实现密码重置令牌。
  • 我很确定使用 Digest auth 是不可能的。
  • 我在 2014 年发现了一篇关于自定义密码策略 blogs.msdn.microsoft.com/webdev/2014/01/06/… 的过时文章

标签: asp.net asp.net-membership visual-studio-2013 sqlmembershipprovider asp.net-identity


【解决方案1】:

您需要提供IPasswordHasher 实现,该实现可以提供清晰的密码而无需散列。您可以将 UserManager.PasswordHasher 设置为您的实现。

截至目前,身份没有 web.config 可配置设置。您需要在代码中提供适当的可配置组合,主要在 Startup.cs 中

不建议以明文形式存储密码。

public class ClearPassword : 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;
    }
}

【讨论】:

  • 提供的密码是明文还是散列(如果我们使用散列密码)?
  • 以明文密码为例。您可以在 HashPassword(string password) 函数中实现哈希算法,并以同样的方式在 VerifyHashedPassword 函数中进行验证。
  • 感谢 jd4u,但我找不到,在哪里添加这个类以及在哪里调用它?
猜你喜欢
  • 2015-11-28
  • 2020-02-29
  • 2014-07-06
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 2018-06-02
  • 2014-05-06
相关资源
最近更新 更多