Asp.net core 了解Microsoft标识命名空间(System.Web.Security、Microsoft.AspNet.Identity.Core与Microsoft.AspNetCore.Identity)

Asp.net core 了解Microsoft标识命名空间(System.Web.Security、Microsoft.AspNet.Identity.Core与Microsoft.AspNetCore.Identity),asp.net-core,.net-core,asp.net-identity,identityserver4,identity,Asp.net Core,.net Core,Asp.net Identity,Identityserver4,Identity,我希望有人也有类似的问题,可以提出建议。我研究了很长时间,但没有找到一个明确的答案 我的设置: 1个MsSQL数据库(包含System.Web.Security的标识表) .Net Framework中的许多DLL(使用System.Web.Security登录) 调用DLL的多个不同程序/应用程序 .Net Framework中的WebForms GUI(使用System.Web.Security登录) 我想要什么: 在.net Core或.net Framework中使用Identit

我希望有人也有类似的问题,可以提出建议。我研究了很长时间,但没有找到一个明确的答案

我的设置:

  • 1个MsSQL数据库(包含System.Web.Security的标识表)
  • .Net Framework中的许多DLL(使用System.Web.Security登录)
  • 调用DLL的多个不同程序/应用程序
  • .Net Framework中的WebForms GUI(使用System.Web.Security登录)
我想要什么:

  • 在.net Core或.net Framework中使用IdentityServer 4
  • 将DLL保存在.Net Framework中
  • 在.NETCore中使用WebApi
  • 使用新的GUI(例如Angular或Blazor)
  • 在WebForms中与新GUI并行使用旧GUI(直到新GUI完成)
我的问题: 我的DLL和应用程序使用System.Web.Security进行用户管理(登录等)。此命名空间在.Net Core中不受支持,但将所有DLL更改为.Net Core对我来说是不可行的,因为这将导致太多更改。我希望将它们保存在.NetFramework中

我的主要问题之一:

  • .Net Core中的应用程序(f.ex.WebApi、IdentityServer4)和.NetFramework中的应用程序/DLL是否可以使用相同的数据库进行标识(登录、成员资格等)。换句话说,如果在不同的应用程序/DLL中使用,“microsoft.aspnet.identity”和“microsoft.aspnetcore.identity”兼容(关于数据库)
  • 或者我必须在所有应用程序/DLL中使用其中一个标识名称空间才能兼容?(因此必须在所有应用程序/DLL中使用相同的框架)
我希望这篇文章简短明了,足以描述我的问题。如果有什么不清楚的地方,请告诉我

更新 我刚刚发现这篇文章可能会在所有DLL中使用.Net标准。我会试试这个,看看它是否适合我。但我仍然不明白“microsoft.aspnet.identity”和“microsoft.aspnetcore.identity”是否以及如何在.Net标准库中工作

结果:我能够使用“Microsoft.AspNetCore.Identity”, .Net标准2.1库中的“Microsoft.EntityFrameworkCore”(Microsoft.EntityFrameworkCore在.Net标准2.1和Net Core 3.0中受支持)。所以这是个好消息(我不必为了标识而将所有DLL迁移到.Net Core。迁移到.Net标准就足够了)。 但是我不能在.Net Framework DLL/App中引用该.Net标准2.1 DLL,因为.Net Framework支持它达到.Net标准2.0。。。所以这并不能完全解决问题,但这似乎是最接近我想要做的事情

更新2

我准备为此更改更改许多代码。F.ex。旧WebApp中的身份验证,以便它与IdentityServer对话,并删除所有项目中与System.Web(.Security)相关的所有内容。 有一件事仍然让我困惑,那就是“microsoft.aspnet.identity”和“microsoft.aspnetcore.identity”。我是否必须为所有项目选择其中一个名称空间,或者我可以混合这些名称空间(取决于项目的框架),但只保留一个数据库

更新3 我标记了一个答案,因为它有助于回答我的基本问题(“它不可能”)。我将尝试实施它,并看到它出现更多的问题。 但是如果有人对这个话题有更多的想法/经验,请在这里分享

我使用的一些来源:

  • 没有将System.Web.Security导入.Net Core的计划:
  • 从2012年到2013年,数据库中的标识表发生了变化:
  • 关于成员资格提供程序与aspnet.core不兼容的讨论:
  • 关于迁移的视频,包含大量信息:
  • 关于身份和.Net核心/标准的讨论与我的问题类似(但没有帮助,可能遗漏了一些东西):
  • 将.Net迁移到.Net Core的指南:
  • “Microsoft.AspNet.Identity.Core”与“Microsoft.AspNetCore.Identity”:
  • IdentityServer4也可以位于.NetFramework中(不必位于.Net Core中) 谢谢大家!
尽管两者的名称都是ASP.NET,但ASP.NET核心与ASP.NET框架完全不同。人们似乎没有意识到这不仅仅是一个版本跳转:你必须重写你的应用程序

ASP.NET成员资格(System.Web.Security)已被弃用,并且在.NET Core中100%不受支持。这不会改变,这里也没有解决办法。如果你想在ASP.NET内核中进行身份验证,你必须从头开始

由于您希望使用Identity Server,无论如何,您仍然可以支持旧版Web表单应用程序,但您必须将所有身份验证移到Identity Server,然后在Web表单应用程序中将Identity Server用作身份验证机制。同样,这需要对Web表单应用程序进行更改。这里没有其他选择

在Identity Server端,您可以选择放弃ASP.NET标识。Identity Server只是身份验证提供者;它与用户管理无关。从技术上讲,您可以继续使用旧的用户表,但您必须为Identity Server创建自定义配置文件和用户存储提供程序,以使它能够完成需要完成的工作。老实说,您最好从这里的Identity重新开始,而不是做大量的工作来尝试支持一个很久以前就被弃用的用户管理系统


长话短说,这里没有什么是琐碎的。如果你想做你所说的,你正在着手一个大项目,这将需要大量的努力和改变你的应用程序的每一部分。事情就是这样。如果你还没有准备好,那就坚持你所拥有的。

关于差异的一些信息:谢谢你的回复,我一直都很满意