TL; DR;
В каком кусте реестра система защиты данных ASP.NET Core хранит свои ключи, когда вы запускаете приложение в IIS с учетной записью рабочего процесса без профиля пользователя.
Похоже, он повторно использует куст, используемый ASP.NET DPAPI, не так ли?
Мы настраиваем кучу основных приложений asp.net, которые должны работать вместе, и проверка защиты от подделки в настоящее время мешает запросам POST. Это выглядит как ASP.NET core Необходимо настроить защиту данных чтобы все приложения использовали одни и те же ключи.
Все наши приложения в настоящее время работают с пользователем пула, у которого нет ни профиля пользователя, ни Набор ключей реестра HKLM вроде есть в наличии.
Нам не разрешено активировать профиль пользователя для этих пользователей пула, поэтому мы хотим использовать реестр.
В разделе «Защита данных» документа «Размещение ASP.NET Core в Windows с IIS» Вот мы обнаружили, что для настройки защиты данных в IIS для сохранения связки ключей одним из подходов является создание ключей реестра для защиты данных с помощью сценария PowerShell из github. Вот :
Этот скрипт просто называется так:
Provision-AutoGenKeys "4.0" "32" $poolSid
При чтении этого сценария PowerShell кажется, что все, что он делает, это устанавливает ACL для пользователя пула по следующим ключам:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0\AutoGenKeys
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0\AutoGenKeys
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\ASP.NET\2.0.50727.0\AutoGenKeys
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\ASP.NET\4.0.30319.0\AutoGenKeys
Вот где я совершенно запутался ... они выглядят как ульи для "старых" автоматически сгенерированных ключей для шифрования с помощью ASP.NET, а не ASP.NET Core ....
Итак, мне интересно ... повторно использует ли Microsoft эти кусты для защиты данных ASP.NET Core?
Или мне стоит поискать в другом месте?
ASP.NET Core может хранить ключи практически где угодно:
Таким образом, вы должны посмотреть на местоположение, соответствующее вашему случаю / конфигурации.
Доказательство того, что пудинг есть ...
Я сделал простой тест и ДА в Система защиты данных .NET CORE является повторное использование старых кустов ASP.NET AutoGenKeys для Microsoft.AspNetCore.DataProtection.KeyManagement.
В тесте для добавления данных использовался следующий улей.
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ 4.0.30319.0 \ AutoGenKeys \ S-1-5-21-1112422158-284577691-398547282-74630 \ DataProtection
Как только я добавил AntiforgeryValidation (который использует внутреннюю защиту данных .net), вызовы начали давать сбой.
Журнал приложения содержал такие записи:
Как только я запустил Provision-AutoGenKeys.ps1 сценарий PowerShell (из https://github.com/aspnet/AspNetCore/blob/master/src/DataProtection/Provision-AutoGenKeys.ps1) для ACL старого ASP.NET AutoGenKeys все начало работать ... Больше никаких предупреждений о том, что реестр HKLM недоступен.
Итак, отвечу на свой вопрос: ДА ... .NET CORE Data Protection повторно использует старый куст ASP.NET AutoGenKeys для Microsoft.AspNetCore.DataProtection.KeyManagement.