`Microsoft.AspNetCore.Identity.PasswordHasher<TUser>` 是否在幕后使用 ASP.NET 核心数据保护?

Does `Microsoft.AspNetCore.Identity.PasswordHasher<TUser>` use ASP.NET Core Data Protection under the covers?

背景: 我有一个 ASP.NET Core 3.1 应用程序 运行 在 AWS FARGATE 容器中(在 Linux 上)。

我需要做的事情: 我需要使用内置的 .NET Core 解决方案对密码进行哈希处理。我更愿意使用无需管理密钥轮换的解决方案;但如果没有其他选择,我会这样做。

我想使用 Microsoft.AspNetCore.Identity.PasswordHasher<TUser> 来散列密码。但是,我不知道这是否使用某种密钥轮换机制(例如 DPAPI)来生成哈希值。根据 ASP.NET Core Data Protectiondefault 实现处理密钥生成和轮换 - 即密钥存储在 LOCAL CryptoRing,默认每 90 天轮换一次。因此:

  1. 密钥不可转让
  2. 用于解密的密钥仅在 90 天内有效

如果我需要处理密钥轮换,我认为(不确定)基于云的解决方案是生成加密密钥并添加到 Azure。但是,如果我只使用 Microsoft.AspNetCore.Identity.PasswordHasher<TUser> 来散列密码而不使用任何 ASP.NET 核心数据保护,我需要知道是否需要这样做。 TIA

不,不是。我通过查看代码知道这一点,可在 https://github.com/dotnet/aspnetcore/blob/master/src/Identity/Extensions.Core/src/PasswordHasher.cs.

编辑: 根据 Barry Dorans (@blowdart) 的说法,它不使用 ASP.NET 数据保护:

https://github.com/dotnet/aspnetcore/issues/21331#issuecomment-621345491