net core 2.2,跨应用程序共享数据保护令牌

时间:2019-05-21 07:33:42

标签: c# asp.net-core data-protection

我将多个.net core 2.2应用程序发布到了一个IIS实例。我的数据保护设置是

public static IDataProtectionBuilder AddCaDataProtection(this IServiceCollection services)
{
    const string applicationName = "CertificationAuthority";
    var registryKey = Registry.CurrentUser.CreateSubKey($@"SOFTWARE\{applicationName}\keys");
    return services
        .AddDataProtection()
        .SetApplicationName(applicationName)
        .ProtectKeysWithDpapi()
        .PersistKeysToRegistry(registryKey);
}

每个应用程序都从其Startup.ConfigureServices调用此静态方法。应用程序在同一个Windows用户帐户下的单独池中运行。虽然,当一个应用程序尝试验证另一应用程序中生成的数据保护令牌时,验证失败并显示InvalidToken结果。 我在做什么错了?

PS。我正是想做的是在一个应用中使用UserManager.GenerateEmailConfirmationTokenAsync生成代码,然后在另一个应用中使用UserManager.ConfirmEmailAsync

1 个答案:

答案 0 :(得分:0)

问题的原因是应用程序池正在使用PoolIdentity凭据运行,实际上意味着每个池都有单独的用户配置文件