Назад | Перейти на главную страницу

Странный IIS с проверкой подлинности Windows + проблема с IE

У меня есть веб-сайт, работающий в IIS и использующий проверку подлинности Windows. Все пользователи, настроенные для получения доступа к сайту, являются доменом AD (а не локальными пользователями). В свойствах веб-сайта я установил использование домена AD в качестве области.

Теперь при использовании Firefox, Safari или Chrome - все нормально. Когда пользователь пытается открыть сайт, он получает поле входа в систему. он вводит просто «имя пользователя» и «пароль» (представим, что это настоящий логин и пароль: P), и он попадает на сайт.

Однако при использовании IE все становится неприятно. Когда пользователь пытается открыть сайт - он получает логин. Пользователь снова вводит «имя пользователя» и «пароль», но они отклоняются! И когда появляется окно входа во второй раз - в нем имя пользователя заполнено как "web-server-domain-name \ username", что неверно, потому что web-server-domain-name не является доменом, в котором находятся все пользователи (это "рекламный домен"). Я потратил несколько дней, пытаясь понять, что происходит ... Обратите внимание, что если я вручную введу "ad-domain \ username" - меня без проблем примут на сайт. Итак, я предполагаю, что IE отправляет неправильное имя пользователя, если домен не указан.

В любом случае, IE - единственный браузер, который вызывает такое поведение!

Можно ли исправить на стороне сервера? Может быть, можно как-то автоматически сопоставить пользователей с пользователями AD?

Если это не решается на стороне сервера - есть ли для этого исправление на стороне клиента?

Спасибо.

PS: Я больше программист, чем системный администратор, поэтому настройка серверов - не моя сильная сторона ...: P

ОБНОВИТЬ:

@Evan: Да, "дайджест-проверка подлинности для серверов домена Windows" также включена.

@Eric: Версия IIS - 6.0. Включены следующие методы аутентификации: Интегрированный и дайджест - все остальные методы отключены. Что касается журнала безопасности. Я смотрел на это, когда выполнял "логин" и "пароль" в Chrome / Firefox и когда делал логин "ad-domain \ username" и "пароль" из IE - сгенерированные сообщения журнала совпадают (я не вижу разницы, тем не мение). При вводе «имени пользователя» и «пароля» я не вижу ошибок в журнале безопасности (или любом другом), поэтому не могу сказать, какой метод он пытается использовать.

ОБНОВЛЕНИЕ 2:

Как предложил Эрик в комментариях - я поигрался со Fiddler ... Играя с ним, я заметил, что когда "имя пользователя" и "пароль" вводятся в FF и IE - значение заголовка "Авторизация" (зашифрованное) отправляется IE длиннее (почти в два раза), чем отправленный FF.

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

Любые идеи?

Это может произойти, если сервер Windows (на котором работает IIS 6.0) и клиенты Windows (использующие IE для доступа к вашему веб-сайту) являются частью локальной сети (LAN).

Также важно то, что у вас включена «встроенная проверка подлинности Windows», поскольку вам необходимо использовать и проверять пользователей из домена AD.

Назовем имя этого домена AD ad_domain_name.

В этом сценарии (LAN + встроенная аутентификация) процесс аутентификации между клиентами Windows и сервером использует безопасность домена AD по умолчанию.

Вы можете проверить, так ли это, попробовав это (в клиенте Windows):

  1. Закройте все окна IE
  2. Откройте IE
  3. Зайдите на свой сайт и получите окно входа в систему
  4. В поле «имя пользователя» напишите: ad_domain_name\username
  5. В файл "пароль" впишите пароль этого пользователя.

Эта процедура должна разрешить вход с первой попытки.

Я наблюдал за этим много раз, и обычно все это рассматривается специалистами Microsoft как «желаемая функция безопасности» в случае локальной сети. И обычно это рассматривалось как не проблема, поскольку процедура входа в систему может быть выполнена в любом случае.

Я не знаю, существует ли конфигурация IIS (и / или сервера Windows), которая может избежать всего этого беспорядка, но мне так же любопытно, как и вам.

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