Аутентификация с помощью веб-фермы - PullRequest
6 голосов
/ 24 февраля 2011

Учитывая идею веб-приложения (.NET 3.5 +)

  • Браузер
  • веб-приложение

аутентификация с использованием форм приведет к аналогичной строке кода

FormsAuthentication.SetAuthCookie(strUsrNm, True)

Это нормально для экземпляра сервера без балансировки нагрузки. как аутентификация работает в статике с балансировкой нагрузки (без фиксированного сеанса / бесконечности), и вы не можете сохранить IP-адрес клиента, пароль пользователя или логин в браузере.

  • Браузер
  • Балансировщик нагрузки
  • Веб-приложение (на сервере 1) || Веб-приложение (на сервере 2)

ограничения: нет сеансов базы данных, нет сервера AD (например: обслуживать внешних пользователей)

Короче

- в ситуации с балансировкой нагрузки приложение узнает, кто пользователь, если он прошел аутентификацию на другом сервере без повторной аутентификации.

спасибо

1 Ответ

17 голосов
/ 24 февраля 2011

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

Здесь у вас есть больше деталей о том, как работает аутентификация форм.

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

Если вы развертываете свое приложение в веб-ферме, вы должны убедиться, что файлы конфигурации на каждом сервере имеют одинаковые значения для validationKey и decryptionKey, которые используются для хеширования и дешифрования соответственно. Это необходимо, поскольку вы не можете гарантировать, какой сервер будет обрабатывать последовательные запросы.

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

validationKey = "21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7 AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B "
decryptionKey = "ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" проверка = "SHA1" дешифрование = "AES" />

Здесь подробнее

...