【问题标题】:Migrating Users from Springboot to ASP.NET将用户从 Spring Boot 迁移到 ASP.NET
【发布时间】:2022-01-17 17:24:34
【问题描述】:

我们正在将后端从 Java Springboot 换成 C# ASP.NET。

Springboot 似乎使用与 ASP 不同的密码散列加密类型。

Springboot$2a$10$AxIQRdy2pmdXHBotzu3g0OOCAoaBZFvDaFmlSqlsChPhrCoCAmLKy

ASPAQAAAAEAACcQAAAAEJ9QPriBB1QkTaSgRZQBe7mDb+ILWYWHChdjPHbLpfsFjSmpnkI4x2G+aexg0JL01A==

我的方法是覆盖 ASP.NET Identity 中的 UserManager 以使用不同的加密,但希望有人在这里帮助我。

编辑:另外,ASP.NET Identity 有一个用于用户的 SecurityStamp 列。我将如何生成这些

【问题讨论】:

  • 看起来springboot中有很多不同的选项。您首先需要检查您的代码以找出正在使用的代码baeldung.com/…

标签: c# asp.net spring-boot encryption


【解决方案1】:

在深入研究了整个密码哈希主题之后,我找到了一个非常简单的解决方案。

我的 Springboot 后端使用 BCrypt 进行密码散列。在 Nuget 包 BCrypt.Net-Next 的帮助下,我能够在用户登录后验证这些哈希值,如果成功,只需使用 ASP 创建一个新的哈希值。身份。我将此代码添加到我的身份验证函数中:

if (user.PasswordHash.StartsWith("$2a"))
        {
            var bcryptResult = BCrypt.Net.BCrypt.Verify(request.Password, user.PasswordHash);
            if(!bcryptResult)
            {
                throw new Exception($"Credentials for '{request.Email} aren't valid'.");
            }

            var newHash = _passwordHasher.HashPassword(user, request.Password);
            user.PasswordHash = newHash;
            await _userManager.UpdateAsync(user);
        }

【讨论】:

    猜你喜欢
    • 2021-11-25
    • 2019-01-07
    • 2020-11-18
    • 2022-01-25
    • 1970-01-01
    • 2022-10-18
    • 2020-07-07
    • 2019-05-24
    • 1970-01-01
    相关资源
    最近更新 更多