首页 > 解决方案 > 使用一次登录进行多个应用程序身份验证

问题描述

我有一个在 asp.net 上运行的应用程序,带有用于用户管理的身份。

现在我正在生产另一个具有 asp.net core 和 Angular 7 技术的应用程序。

我曾尝试对两个应用程序使用相同的数据库进行登录,但由于 .net 和 .net 核心上的 Identity 具有不同的哈希算法,因此它不起作用。

我可以通过仅提供第一个应用程序的任何按钮链接来对 .net core 和 angular 7 应用程序使用我的 .net 应用程序验证吗?

当我像上面那样继续时,我发现下面列出了一些问题:-

我该如何继续这种情况?

任何帮助将不胜感激。

标签: .netasp.net-coreasp.net-identityasp.net-core-identity

解决方案


由于 ASP.NET Core Identity 对密码使用更安全的散列机制,默认情况下,您不能使用较旧的 ASP.NET Identity 访问同一数据库,因为它不理解新机制。然而,开箱即用的方法是将 ASP.NET Core Identity 与旧哈希一起使用,因为哈希实际上是版本化的,以允许从旧数据库轻松迁移。

如果您希望 ASP.NET Core Identity 和 ASP.NET Identity 使用同一数据库共存,则必须使用较旧的哈希算法,因为这是 ASP.NET Identity 唯一支持的一种。幸运的是,您可以将 ASP.NET Core Identity 配置为仅使用该算法本身。

配置在文档中进行了解释,如下所示:

services.Configure<PasswordHasherOptions>(option =>
{
    option.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2;
});

这将有效地降级 ASP.NET Core Identity 以使用旧算法,从而与 ASP.NET Identity 完全兼容。


推荐阅读