Search code examples
c#asp.net-coreasp.net-identity-3

How to set PasswordHasherCompatibilityMode.IdentityV3 in ASP.NET 5 Identity?


Currently it seems default is set to PasswordHasherCompatibilityMode.IdentityV2 which is HMAC-SHA1 in ASP.NET 5. I tried to create a instance of PasswordHasherOptions to add to services (DI) but could not get it to work.

V3 uses PBKDF2 with HMAC-SHA256, 128-bit salt, 256-bit subkey, 10000 iterations.

I hope this would be as easy as some configuration setting in future rather than having to implement custom implementation since all the code is already there.

Update:

services.Configure<PasswordHasherOptions>(options => options.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV3);


Solution

  • The default shouldn't be V2, the default is the newer format, as you can see in https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/PasswordHasherOptions.cs

        /// <remarks>
        /// The default compatibility mode is 'ASP.NET Identity version 3'.
        /// </remarks>
        public PasswordHasherCompatibilityMode CompatibilityMode { get; set; } = 
               PasswordHasherCompatibilityMode.IdentityV3;
    

    If the first byte of the hashed password is 0x01 then it's a version 3 hash.

    If you're seeing 0x00 then either it's configured elsewhere in your code, or there's a bug, in which case please log it on GitHub.