По умолчанию автоматическая настройка ключа машины выполняется для каждого приложения (AutoGenerate, IsolateApps). MSDN утверждает, что ключ дешифрования и валидации основан на идентификаторе веб-приложения. Я размещаю два сайта ASP.NET MVC 2 на своем сервере IIS 7, но обнаружил, что ключи машины совпадают. Я проверил это с помощью отражения, чтобы увидеть свойства ValidationKeyInternal и DecryptionKeyInternal. Я также проверил его, создав на одном сайте cookie-файл с маркером защиты от подделки, а затем передал его другому, и файл cookie можно прочитать.
После проб и ошибок я обнаружил, что ключ изменится, если изменится идентичность пула приложений. Два сайта имеют одинаковые ключи, потому что они работают с учетными данными сетевого сервиса. Как только я изменяю удостоверение пула приложений одного сайта, они начинают иметь разные ключи проверки / шифрования.
Однако после развертывания двух сайтов на другом сервере я всегда получаю одинаковые машинные ключи даже после изменения идентификатора пула приложений. Оба сервера имеют одинаковую аппаратную и программную конфигурацию.
Я хотел бы знать, есть ли ссылка на фактическую логику того, как машинный ключ генерируется в настройках AutoGenerate, IsolateApps. В Интернете много статей, в которых говорится об установке одного и того же ключа машины в сценарии веб-фермы. Но я столкнулся с проблемой на противоположной стороне. Автоматическое создание ключей для каждого веб-приложения не работает должным образом. У кого-нибудь была такая же проблема?