Проблемы с балансировкой нагрузки MVC AuthenticationTicket (F5)

У меня возникают проблемы с аутентификацией в среде с балансировкой нагрузки. Балансировщик нагрузки — F5 с соответствием адреса источника постоянство включено. Моя аутентификация довольно стандартна, я проверяю учетные данные пользователя и создаю билет аутентификации.

  string encTicket = FormsAuthentication.Encrypt(authTicket);
  var faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
  Response.Cookies.Add(faCookie);

Примерно в 50% случаев при входе в среду с балансировкой нагрузки (несмотря на настройку типа Sticky Session на уровне F5) меня немедленно перенаправляют на страницу входа для повторной авторизации. У меня есть 2 сервера, и похоже, что мой последующий запрос на защищенную область направляется на сервер, который не содержит информации о моем сеансе. При использовании внутреннего DNS для любого из серверов такой проблемы нет, и аутентификация работает нормально в 100% случаев.

В тех случаях, когда я успешно перехожу на начальную страницу (через F5), постоянство работает довольно хорошо, и я постоянно перенаправляюсь на правильный сервер, по крайней мере, до тех пор, пока мой сеанс не истечет после назначенного времени. Однако слишком много случаев, когда мне приходится проходить аутентификацию дважды из-за проблемы с предварительной аутентификацией.

Моя догадка

Это какое-то состояние гонки, которое существует между созданием билета аутентификации и его обработкой F5 и гарантией правильного сохранения? Это кажется мне возможным, но это мое первое приложение, использующее этот балансировщик нагрузки, поэтому я просто предполагаю.

Кто-нибудь уже имел дело с подобной ситуацией? Есть ли какая-либо конфигурация на стороне приложения или на стороне F5, которая может решить эту проблему?

Обновить

При ближайшем рассмотрении оказывается, что это происходит гораздо реже, чем в 50% случаев. 50% обычно возникает при первой попытке войти через F5 в данный день (или через какой-то сколь угодно долгий промежуток времени). Когда я вхожу в систему и пытаюсь получить доступ к защищенному ресурсу, примерно в 50% случаев меня возвращают на страницу входа. Если я перезагружу URL-адрес защищенного ресурса, я вхожу в систему. Это, кажется, дает больше доказательств в пользу идеи какого-то состояния гонки.

Чтобы получить представление о частоте, я также запустил автоматизированный инструмент, который входил и выходил 1000 раз (с одними и теми же учетными данными пользователя) и не мог воспроизвести проблему. Однако, поскольку я постоянно использовал одного и того же пользователя в быстрой последовательности, я полагаю, что F5 постоянно направлялся к одному и тому же серверу, и поэтому это был не самый полезный тест.


person Rondel    schedule 19.09.2013    source источник


Ответы (1)


Пожалуйста, убедитесь, что вы используете один и тот же машинный ключ на обоих компьютерах. Для получения дополнительной информации о настройке перейдите здесь.

person Rafael Staib    schedule 27.09.2013
comment
Спасибо за предложение. Однако ключ машины одинаков на обоих серверах. - person Rondel; 27.09.2013