2010-06-30 2 views
1

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

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

Мы видим на образцах случаю в журнале, как это (подробности) сбивающих с толку

Первый журнальной записи

UserName - [email protected]

USERID - 1111

Webpage - page1

IP - ip1

Время - 2010-06-29 12: 56: 20,750

SessionId - h3uyz2fsdfegugjy452sdz0far

Второй Вход Вход

UserName - [email protected]

UserId - 2222

WebPage - page2

IP - ip2

Время - 2010-06-29 12: 57: 16,133

SessionId - 21ipjsdfsdfieqqwyfdokgqsb55

Мы используем проверки подлинности форм с использованием стандартных форм ASP.NET структуры аутентификации (стандартный контроль входа в систему, и мы реализовали настраиваемого поставщика членства).

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

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

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

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

Элемент аутентификации форм в сети.конфигурации является

Режим проверки подлинности = "Формы"

формы loginUrl = имя "LoginPage.aspx" = "ASPXFORMSAUTH"

+0

У вас есть более одного веб-сайта, работающего на ваших серверах? – TheGeekYouNeed

+0

Да, есть 2 веб-сайта – scottrm

+0

Когда вы говорите, что вы отключили кеширование вывода, вы имеете в виду, что вы его отключили, или вы удалили все директивы кэширования? Мы видим то же самое! – 2011-02-04 14:56:03

ответ

0

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

0

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

Смежные вопросы