You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置ASP.NET7独立账户验证Cookie共享至ASP.NET4.x及其他应用?

ASP.NET7 与 ASP.NET4.x 身份验证Cookie共享配置方案

一、ASP.NET7 端(Cookie生成方)配置

1. 基础Cookie属性配置

确保生成的Cookie与ASP.NET4.x的标识、跨域规则一致,在Program.cs中配置身份验证服务:

builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>();

// 配置Identity应用Cookie的核心属性
builder.Services.ConfigureApplicationCookie(options =>
{
    // 与ASP.NET4.x默认Cookie名称保持一致
    options.Cookie.Name = ".ASPXAUTH";
    // 跨应用共享的根域,需替换为实际业务域
    options.Cookie.Domain = ".yourdomain.com";
    options.Cookie.Path = "/";
    options.Cookie.SameSite = SameSiteMode.Lax;
    // 生产环境强制HTTPS
    options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
    options.Cookie.HttpOnly = true;
});

2. 兼容ASP.NET4.x的加密配置

ASP.NET4.x依赖MachineKey加密Cookie,ASP.NET7需配置数据保护系统使用相同的加密规则与密钥,保证Cookie可被4.x解密验证:

builder.Services.AddDataProtection()
    // 所有共享Cookie的应用必须使用相同的应用名称
    .SetApplicationName("SharedAuthenticationApp")
    // 对齐ASP.NET4.x的加密算法
    .UseCryptographicAlgorithms(new AuthenticatedEncryptionOptions
    {
        EncryptionAlgorithm = EncryptionAlgorithm.AES_256_CBC,
        ValidationAlgorithm = ValidationAlgorithm.HMACSHA256
    });

// 配置Cookie的TicketDataFormat使用兼容的加密保护
builder.Services.ConfigureApplicationCookie(options =>
{
    var dataProtectionProvider = builder.Services.BuildServiceProvider().GetRequiredService<IDataProtectionProvider>();
    var protector = dataProtectionProvider.CreateProtector(
        "Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware",
        CookieAuthenticationDefaults.AuthenticationScheme,
        "v2");
    options.TicketDataFormat = new TicketDataFormat(protector);
});

二、ASP.NET4.x 端(Cookie验证方)配置

1. 同步MachineKey配置

在Web.config中配置与ASP.NET7一致的密钥和加密算法:

<system.web>
  <machineKey validationKey="你的验证密钥" 
              decryptionKey="你的解密密钥" 
              validation="HMACSHA256" 
              decryption="AES" />
</system.web>

2. 配置Forms身份验证

确保Forms验证的Cookie属性与ASP.NET7匹配:

<system.web>
  <authentication mode="Forms">
    <forms name=".ASPXAUTH" 
           domain=".yourdomain.com" 
           path="/" 
           requireSSL="true" 
           httpOnly="true" />
  </authentication>
</system.web>

三、新.NET 5+应用端配置

对于后续开发的.NET 5+应用,只需同步Cookie属性与数据保护配置即可:

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.Cookie.Name = ".ASPXAUTH";
        options.Cookie.Domain = ".yourdomain.com";
        options.Cookie.SameSite = SameSiteMode.Lax;
        options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
    });

builder.Services.AddDataProtection()
    .SetApplicationName("SharedAuthenticationApp")
    .UseCryptographicAlgorithms(new AuthenticatedEncryptionOptions
    {
        EncryptionAlgorithm = EncryptionAlgorithm.AES_256_CBC,
        ValidationAlgorithm = ValidationAlgorithm.HMACSHA256
    });

若使用Identity框架,需额外配置ApplicationCookie的属性与TicketDataFormat,参考ASP.NET7端的配置逻辑。

四、关键注意事项

  • 所有共享Cookie的应用必须处于同一根域下,否则Cookie无法跨域传递
  • 生产环境必须启用HTTPS,避免Cookie被明文传输
  • 验证密钥与解密密钥需保密,建议通过环境变量或密钥管理服务注入,禁止硬编码
  • 测试阶段可在本地配置相同的MachineKey,快速验证Cookie共享效果

内容的提问来源于stack exchange,提问作者Douglas Ferreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:57:53