MachineKey в web.config не синхронизирован между двумя приложениями IIS
У нас есть служба ASP.NET 4.5 WebAPI, которая размещается на двух отдельных экземплярах AWS, которые находятся за балансировщиком нагрузки. Обе эти машины имеют стандарт system.web
раздел конфигурации, содержащий machineKey
элемент с ключами дешифрования и проверки и алгоритмами. Файл web.configs на обеих машинах идентичен:
<system.web>
...
<machineKey decryption="AES" decryptionKey="..." validation="SHA1" validationKey="..." />
...
</system.web>
Эти ключи используются промежуточным программным обеспечением OAuth для дешифрования / проверки токенов носителя в запросах.
Все работало абсолютно нормально в течение последних двух лет, но в прошлом месяце запросы, поступающие во второе веб-окно, не выполнялись, поскольку токен носителя OAuth кажется недействительным.
Если мы одновременно запускаем только одну "ветвь" веб-балансировщика, все в порядке, независимо от того, какая ветвь обрабатывает все запросы. Но если оба работают, запросы ко второму ящику терпят неудачу. Это странно, поскольку не было никаких изменений кода и каких-либо изменений среды, о которых мы знаем, ни для веб-блоков, ни для балансировщика нагрузки.
Все это говорит о том, что обе машины используют разные машинные ключи, хотя они оба жестко запрограммированы в web.config
,
Есть ли какой-нибудь способ, которым ключ машины как-то переопределяется? Есть ли другие объяснения того, что может пойти не так?
1 ответ
Проверьте соответствие системных часов на обоих экземплярах AWS. Кажется, я вспомнил, что это случилось со мной несколько лет назад.