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

如何生成COMMON KEY RING以在ASP.NET Core(.NET 8)子域间共享Cookie?

ASP.NET Core 8 主域与子域认证Cookie共享:公共密钥环生成方法

要实现主域和子域的认证Cookie共享,核心是让所有关联应用使用同一套数据保护密钥环(Common Key Ring),这样它们能解密彼此生成的认证Cookie。以下是具体生成和配置步骤:

一、本地开发环境

1. 创建共享密钥存储目录

在本地磁盘创建专门目录存放共享密钥,比如:

  • Windows:C:\SharedAuthKeys
  • Linux/macOS:/var/shared_auth_keys

2. 生成密钥到共享目录

打开终端,执行命令生成密钥并持久化到上述目录(需安装.NET 8 SDK):

dotnet data-protection key generate --destination "C:\SharedAuthKeys" --purpose "CrossDomainAuthCookies"

执行后目录会生成含密钥的XML文件,所有应用将共用这套密钥。

3. 配置所有应用指向共享密钥

在每个需共享Cookie的应用的Program.cs中添加DataProtection配置:

builder.Services.AddDataProtection()
    // 指定共享密钥存储目录
    .PersistKeysToFileSystem(new DirectoryInfo(@"C:\SharedAuthKeys"))
    // 所有应用必须设置相同的应用名称,保证密钥上下文一致
    .SetApplicationName("YourSharedAppName");

二、生产环境

生产环境不建议用本地目录存密钥,推荐以下两种方式:

方法1:使用专业密钥管理服务

配置DataProtection从密钥管理服务读取密钥,示例代码(以Azure Key Vault为例):

builder.Services.AddDataProtection()
    .PersistKeysToAzureBlobStorage(new Uri("https://yourvault.blob.core.windows.net/keys/keys.xml"))
    .ProtectKeysWithAzureKeyVault(new Uri("https://yourvault.vault.azure.net/keys/DataProtectionKey"),
        new DefaultAzureCredential())
    .SetApplicationName("YourSharedAppName");

所有应用需配置相同的密钥存储地址和应用名称。

方法2:手动生成密钥并注入配置

  1. 生成密钥XML文件:
dotnet data-protection key generate --format xml --output key.xml
  1. 将XML内容复制到所有应用的安全配置中(建议用环境变量或配置中心,避免硬编码):
{
  "DataProtection": {
    "Keys": [
      "<生成的XML密钥内容>"
    ]
  }
}
  1. 在Program.cs中配置读取密钥:
builder.Services.AddDataProtection()
    .PersistKeysToConfiguration(builder.Configuration.GetSection("DataProtection:Keys"))
    .SetApplicationName("YourSharedAppName");

三、配套Cookie配置

除密钥环外,所有应用需统一认证Cookie配置:

builder.Services.ConfigureApplicationCookie(options =>
{
    // 设置主域,确保子域可访问Cookie,比如.example.com
    options.Cookie.Domain = ".yourdomain.com";
    // 所有应用使用相同的Cookie名称
    options.Cookie.Name = ".SharedAuthCookie";
    // 其他Cookie配置(过期时间、路径等)保持一致
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:13:13