9

在我的ASP.NET应用程序我在web.config中继DefaultMembershipProvider和SqlMembershipProvider的设置:如何为ASP.NET身份设置密码规则?

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

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

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

+1

密码检索通过要求双向加密,然后以纯文本方式中继凭据,极大地增加了应用程序的弱点。如果可能的话,考虑通过电子邮件来实现密码重置令牌。 – pwdst

+0

我很确定这是不可能与Digest验证。 –

+0

我发现了一篇有关自定义密码策略的2014年文章https://blogs.msdn.microsoft.com/webdev/2014/01/06/implementing-custom-password-policy-using-asp-net-identity/ – oneNiceFriend

回答

18

您需要提供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; 
    } 
} 
+0

提供了密码是明文还是散列(如果我们使用散列密码)? – idipous

+0

示例是明文密码。您可以在HashPassword(字符串密码)函数中实现哈希算法,并以相同的方式在VerifyHashedPassword函数中验证它。 – jd4u

+1

谢谢jd4u,但我无法得到,在哪里添加这个类,以及在哪里调用它? – oneNiceFriend