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. Кажется, я вспомнил, что это случилось со мной несколько лет назад.

Другие вопросы по тегам