【问题标题】:Does `Microsoft.AspNetCore.Identity.PasswordHasher<TUser>` use ASP.NET Core Data Protection under the covers?`Microsoft.AspNetCore.Identity.PasswordHasher<TUser>` 是否在幕后使用 ASP.NET Core 数据保护?
【发布时间】:2020-08-13 20:54:42
【问题描述】:

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

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

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

  1. 密钥不可转让
  2. 解密密钥的有效期仅为 90 天

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

【问题讨论】:

    标签: asp.net-core .net-core asp.net-identity password-hash dpapi


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      不,它没有。我通过查看代码知道这一点,该代码位于https://github.com/dotnet/aspnetcore/blob/master/src/Identity/Extensions.Core/src/PasswordHasher.cs

      【讨论】:

      • 我也查看了代码,发现它使用了System.Security.Cryptography.RandomNumberGenerator。但是,我不知道这是否是数据保护 API 的一部分(例如 RNGCryptoServiceProvider 是)。
      • 不,不是,这是一个 .NET BCL 类
      • 我知道,您如何区分一个类是属于数据保护 API 的一部分还是只是一个 BCL 类?它们都在同一个命名空间中并且RNGCryptoServiceProvider 派生自RandomNumberGenerator - 除非我说RNGCryptoServiceProvider 是数据保护的一部分是不正确的)
      • 是的,我确实做了 RTFM,如果您仔细观察,您会发现 PasswordHasher(和密钥派生)实际上在数据保护 API 下被提及;这似乎暗示他们是其中的一部分 - docs.microsoft.com/en-us/aspnet/core/security/data-protection/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2022-01-24
      • 2021-12-21
      • 1970-01-01
      • 2017-02-17
      • 2014-11-03
      相关资源
      最近更新 更多