在 ASP.NET 和 ASP.NET 核心应用程序中共享表单身份验证

Share Forms Authentication in ASP.NET and ASP.NET Core applications

我有一个 ASP.NET 应用程序 "A" 具有表单身份验证并公开了 WebAPI。现在我需要创建另一个 ASP.NET 核心应用程序 "B",它将通过自己创建一个 cookie(对于某些特定的硬编码用户)在内部调用应用程序 "A" 并调用应用程序的 WebAPI 方法 "A" 正确,就像用户登录一样。

如果 ASP.NET 和 ASP.NET Core 之间的两个站点位于同一域或子域中,则可以共享表单身份验证。 Scott Hanselman 在 https://www.hanselman.com/blog/SharingAuthorizationCookiesBetweenASPNET4xAndASPNETCore10.aspx 上对此有一个 post。以下是基本步骤:

  1. 将互操作包安装到您的应用程序中
    • ASP.NET 4.5: 添加 Microsoft.Owin.Security.Interop NuGet 包
    • ASP.NET 核心:添加 Microsoft.AspNetCore.DataProtection.Extensions NuGet 包
  2. 在每个应用程序中设置 CookieName,使它们相同
  3. 如果您的应用程序使用子域
  4. ,请设置 CookieDomain 属性
  5. 将每个应用程序配置为使用相同的 AspNetTicketDataFormat cookie 格式