У нас есть устаревшее приложение ASP.NET Webforms, которое мы переносим в новый кластер серверов. Приложение размещается в IIS и использует проверку подлинности Windows. Приложение использует устаревшую функцию
Request.ServerVariables["LOGON_USER"]
Приложение предоставляется конечным пользователям через шлюз приложений Azure.
Мы заметили очень странное поведение: иногда, когда два пользователя одновременно входят в приложение, значение Request.ServerVariables["LOGON_USER"]
для одного из пользователей неверное, например, пользователь A становится пользователем B!
Мы попытались добавить в IIS заголовки управления кешем, а именно: no-cache, no-store
, но это не устранило проблему.
Мы также подтвердили, что проблема не возникает при прямом доступе к одному из серверов, т. е. не через шлюз приложений Azure, поэтому мы склонны думать, что это проблема с кэшированием. Но, конечно, мы открыты для предложений.
Проблема заключалась в том, что AppGw не поддерживает протокол NTLM/Kerberos и иногда может смешивать сеансы пользователей. Мы решили остановиться на другой методике.