如何为ASP.NET身份设置密码规则?

11

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

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

它们是Digest认证所需的。我想转移到ASP.NET Identity。我正在使用自动化工具更新我管理的所有web.config文件。

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


1
密码检索通过需要双向加密,然后以明文方式传递凭据,极大地增加了应用程序的弱点。如果可能的话,请考虑通过电子邮件实现密码重置令牌。 - pwdst
我非常确定使用摘要认证不可能实现这一点。 - IT Hit WebDAV
我找到了一篇2014年的有关自定义密码策略的文章,链接为https://blogs.msdn.microsoft.com/webdev/2014/01/06/implementing-custom-password-policy-using-asp-net-identity/。 - oneNiceFriend
1个回答

21

你需要提供一个可以提供未经散列的明文密码的IPasswordHasher实现。您可以将UserManager.PasswordHasher设置为您的实现。

目前,Identity没有可配置的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;
    }
}

提供的密码是明文还是哈希值(如果我们使用了哈希密码)? - idipous
这个例子是关于明文密码的。你可以在HashPassword(string password)函数中实现散列算法,然后在VerifyHashedPassword函数中进行验证。 - jd4u
2
谢谢jd4u,但我不知道在哪里添加这个类以及在哪里调用它? - oneNiceFriend

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接