Идентификация Windows запутывается между пользователями - PullRequest
1 голос
/ 30 июня 2010

Мы наблюдаем какое-то странное поведение в журналах нашего веб-сервера, когда идентичность текущего пользователя, в котором он находится, похоже, меняется местами с другим пользователем. Я опишу нашу настройку, прежде чем объяснять дальше.

Мы запустили веб-сайт asp.net (версия 3.5 платформы) на 2 веб-серверах Windows 2008 и используем проверку подлинности на основе форм. Они сбалансированы по нагрузке с использованием отдельного сервера под управлением Apache 2.2 в Linux (Cent OS 5). Балансировка нагрузки просто прикрепляет куки-файл к пользователю и направляет его на определенный сервер для каждого последующего запроса.

Мы иногда замечаем в журнале такие шаблоны (подробности запутаны)

Первая запись в журнале

имя пользователя - customer1@x.com

UserId - 1111

Веб-страница - страница1

IP - ip1

Время - 2010-06-29 12: 56: 20.750

SessionId - h3uyz2fsdfegugjy452sdz0far

Вторая запись в журнале

имя пользователя - customer1@x.com

UserId - 2222

Веб-страница - страница2

IP - ip2

Время - 2010-06-29 12: 57: 16.133

SessionId - 21ipjsdfsdfieqqwyfdokgqsb55

Мы используем проверку подлинности на основе форм, используя стандартную структуру проверки подлинности форм asp.net (стандартный элемент управления входом в систему, и мы реализовали пользовательский поставщик членства).

UserName - это идентификатор Windows, полученный с помощью «HttpContext.Current.User.Identity.Name». UserId - это идентификатор базы данных, установленный в сеансе. Идентификатор сеанса извлекается с использованием «HttpContext.Current.Session.SessionID»

Как вы можете видеть, одна и та же идентификация Windows одинакова для двух разных пользователей, с разными IP-адресами и с разными идентификаторами сеансов, которые посещают сайт примерно в одно и то же время. Мы проверили, и IP были из совершенно разных мест. Неправильная идентификация Windows, кажется, записывается. В UserId 2222 должно быть записано другое имя пользователя.

Поскольку это происходит очень редко, код является стандартным и существенно не менялся в течение некоторого времени, поэтому мы не «думаем», что это ошибка кодирования. Мы предполагаем либо проблему с балансировщиком нагрузки, либо некоторую проблему на веб-сервере. Я никогда раньше не слышал о таких проблемах в asp.net.

Недавно мы изменили нашу настройку с IIS6 в Windows 2003 и аппаратного балансировщика нагрузки Cisco на текущую настройку IIS7 в Windows 2008 и балансировку нагрузки Apache. Любые идеи приветствуются.

Запись аутентификации форм в файле web.config:

режим аутентификации = "Формы"

forms loginUrl = "LoginPage.aspx" name = ". ASPXFORMSAUTH"

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

Вы должны гарантировать, что куки каждого пользователя уникальны.Вы не можете зависеть от sessionid.

0 голосов
/ 06 февраля 2012

Вы устанавливаете какие-либо переменные сеанса? Идентификатор сеанса сбрасывается для каждого запроса, если только вы не сохраните что-либо, что-либо в сеансе для каждого пользователя.

...