将用户从 Spring Boot 迁移到 ASP.NET

Posted

技术标签:

【中文标题】将用户从 Spring Boot 迁移到 ASP.NET【英文标题】:Migrating Users from Springboot to 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/… 【参考方案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);
        

【讨论】:

以上是关于将用户从 Spring Boot 迁移到 ASP.NET的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 学习总结—— 如何将 Spring Boot 构建工具从 Maven 迁移到 Gradle

使用spring-boot在多个数据库之间进行数据迁移

迁移到 Spring Boot 2 并使用 Spring Batch 4

将用户从 Firebase 迁移到 ASP.NET

将 Spring boot 1.5 迁移到 2.x 无法启动应用程序

将 Spring Boot 应用程序迁移到最新的 Java 版本 (Java 15)