net core 2.2, делитесь токенами защиты данных между приложениями

Я получил несколько приложений .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. Приложения работают в разных пулах под одной и той же учетной записью пользователя единого окна. Хотя, когда одно приложение пытается проверить токен защиты данных, созданный в другом приложении, проверка не выполняется с результатом InvalidToken. Что я делаю не так?

PS. Что именно я пытаюсь сделать, так это сгенерировать код с UserManager.GenerateEmailConfirmationTokenAsync в одном приложении, а затем сделать UserManager.ConfirmEmailAsync в другом.


person Leff    schedule 21.05.2019    source источник


Ответы (1)


Причина проблемы заключалась в том, что пулы приложений работали с учетными данными PoolIdentity, что фактически означает отдельный профиль пользователя для каждого пула.

person Leff    schedule 21.05.2019