Интегрированная проверка подлинности Windows - PullRequest
6 голосов
/ 29 января 2009

У нас действительно странные проблемы с интегрированной аутентификацией Windows с IIS, и я не уверен, могу ли я увидеть шаблон или нет.

У нас есть запись DNS-Cname с именем Fred. У нас есть веб-сайт IIS с Фредом в качестве заголовка узла. Когда я подключаюсь к этому сайту, мне выдается запрос на учетные данные. Я ожидаю, что мои учетные данные будут переданы. Если я введу свои учетные данные, мне будет предоставлен доступ.

Затем я создаю запись локального хоста с именем Betty и указываю файлу хоста тот же IP-адрес, что и у Fred, и меняю заголовок хоста на Betty. Нет нигде связанной записи CName. Когда я получаю доступ к Бетти, я автоматически аутентифицируюсь, и все в порядке.

Если я попытаюсь обойти запись CName, создать запись в локальном файле хоста с именем Fred и изменить заголовок хоста на Fred. Я все еще получаю запрос аутентификации.

Как я вижу, у меня есть два вопроса. Как эта запись CName влияет на разрешение здесь или это красная сельдь? Во-вторых, что происходит с этим вызовом? У нас есть подобные симптомы в других местах, и мы обеспокоены тем, что наш токен аутентификации где-то раскололся. Может ли кто-нибудь пройти через порядок с Аутентификацией, то есть какие пакеты отправляются на какие машины. Есть ли способ, которым я могу отследить это? (Я думаю WireShark или что-то подобное). Как я могу доказать, что мой токен аутентификации пройден и действителен?

Ответы [ 2 ]

6 голосов
/ 29 января 2009

Причина для окна аутентификации проста: Internet Explorer отправляет ваши учетные данные, только если он считает, что хост находится в зоне «Локальная интрасеть» (предполагается конфигурация по умолчанию). Если узел вне того, что IE считает «локальным», запрашивает учетные данные NTLM, появится окно аутентификации, и вам придется проходить аутентификацию вручную.

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

IE принимает во внимание несколько вещей, чтобы решить, должен ли хост рассматриваться как «Локальная интрасеть»:

  1. это IP-адрес в локальной подсети -> ДА
  2. это простое имя хоста (то есть "без точек") -> ДА
  3. в опциях IE: есть ли в списке «Сайты ...» для «Локальная интрасеть» -> ДА
  4. в опциях IE: есть ли в списке исключений прокси -> ДА
  5. это путь UNC -> ДА
  6. в противном случае: НЕТ
  7. Иногда в списке личных паролей для этого имени хоста существует старый пароль (доступный через Панель управления -> Учетные записи пользователей). Если это не так, могут возникнуть похожие проблемы.

Я подозреваю, что ваш хост "fred" не выполняет условия с 2 по 4, но ваш тестовый пример "Betty" каким-то образом выполняет.

То, как было разрешено имя (запись CName, запись A, файл хостов и т. Д.), Не имеет значения, поскольку метод разрешения имени непрозрачен для вызывающего приложения. IE просто запрашивает имя «XYZ» и возвращает IP-адрес.

Недавние изменения конфигурации могут потребовать очистки локального DNS-кэша. Здесь может помочь случайный ipconfig /flushdns, в противном случае вы можете ненадолго остановить службу DNS-клиента.

Описанная внутренняя логика применяется к изменению имени хоста и настроек безопасности в зависимости от результата.

0 голосов
/ 29 января 2009

CName будет красная сельдь. Не влияет на Windows Auth или нет. Самый простой способ отследить это с помощью Fiddler. Вы должны увидеть ваш запрос, за которым следует ответ 401 (он содержит аутентификацию, поддерживаемую сервером), затем ваш запрос снова отправляется с деталями аутентификации (или вам предлагают, а затем отправляют)

...