我正在将一个Web应用程序从ASP.Net移植到ASP.Net Core,需要同时支持存储在apps数据库中的用户的Windows集成身份验证和Cookie身份验证(该应用程序由客户自行托管,不同的客户使用不同的身份验证方法有时从一个迁移到另一个) .

为了在身份验证方法之间共享尽可能多的代码,我使用ClaimsTranformer将声明添加到与我们使用Cookie Auth(使用ASP.Net核心身份)的Windows Auth用户相匹配 . 但是,我希望这些声明存储在一个cookie中(以一种安全的方式,就像Identity为cookie身份验证一样),这样我就不必在每次请求时都访问数据库 . 有没有办法做到这一点?

在ASP.Net中,我曾经在第一次请求时查找Windows用户的用户详细信息,然后使用ASP.Net Identity cookie auth查找SignIn;然后,应用程序将使用cookie auth,就像用户已使用用户/密码进行身份验证一样 . 不幸的是,在Core中,似乎只要在Startup.ConfigureServices中调用services.AddIdentity,它就会禁用Windows集成身份验证 .

我在.Net Framework 4.7上使用ASP.Net Core 2.1(尽管我们计划在未来的版本中迁移到.Net Core,当我们可以删除一些依赖项时) .