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