Проверка подлинности Windows для IIS на локальном сервере с полным URL
9
У меня есть веб-приложение, настроенное в IIS 7, настроенное для проверки подлинности Windows. Я могу аутентифицироваться на машине через ее полный URL-адрес с любой другой машины, и он использует соответствующий домен. Тем не менее, когда я пытаюсь подключиться к машине с самого себя через полностью определенный домен (либо в другой службе, либо просто через URL в IE), приглашение Windows Login пытается принудительно использовать компьютер в качестве домена, а не правильный домен для входа в систему. Попытка указать домен с domain\usernameили username@domain.comне удается.
Я должен отметить, что просмотр веб-приложения через localhostна машине работает, но использование полного site.company.com/webserviceстиля URL не работает на локальной машине, потому что домен входа не так. Что я могу сделать, чтобы он использовал правильный домен для входа?
Я пытался сделать то же самое. Получите доступ к веб-сайту в локальном IIS, используя полное доменное имя, и вам все время сообщали, куда обратиться IIS.
В любом случае, из моего копания, вы должны отключить проверку обратной связи для локальных веб-сайтов IIS.
Это связано с функцией безопасности, известной как LoopbackCheck.
Сообщение об ошибке при попытке доступа к серверу локально с использованием его полного доменного имени или псевдонима CNAME после установки пакета обновления 1 (SP1) для Windows Server 2003: «Доступ запрещен» или «Ни один сетевой поставщик не принял указанный сетевой путь» http://support.microsoft .com / кб / 926642
Есть два решения:
Метод 1 (рекомендуется): создайте имена хостов локального органа безопасности, на которые можно ссылаться в запросе проверки подлинности NTLM. Чтобы сделать это, выполните следующие действия для всех узлов на клиентском компьютере:
Нажмите кнопку Пуск, выберите пункт Выполнить, введите regedit и нажмите кнопку ОК.
Найдите и щелкните следующий раздел реестра: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0
Щелкните правой кнопкой мыши MSV1_0, выберите пункт «Создать», а затем выберите «Многостроковое значение».
В столбце Имя введите BackConnectionHostNames и нажмите клавишу ВВОД.
Щелкните правой кнопкой мыши BackConnectionHostNames и выберите команду «Изменить».
В поле «Значение» введите CNAME или псевдоним DNS, который используется для локальных общих папок на компьютере, и нажмите кнопку ОК.
Примечание. Введите каждое имя хоста в отдельной строке.
Примечание. Если запись реестра BackConnectionHostNames существует как тип REG_DWORD, необходимо удалить запись реестра BackConnectionHostNames.
Закройте редактор реестра и перезагрузите компьютер.
Способ 2. Отключите проверку петли проверки подлинности, задав для параметра реестра DisableLoopbackCheck в разделе реестра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa значение 1. Чтобы установить для параметра реестра DisableLoopbackCheck значение 1, выполните следующие действия на клиентском компьютере:
Нажмите кнопку Пуск, выберите пункт Выполнить, введите regedit и нажмите кнопку ОК.
Найдите и щелкните следующий раздел реестра: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa
Щелкните правой кнопкой мыши Lsa, выберите пункт «Новый», а затем нажмите «Значение DWORD».
Введите DisableLoopbackCheck и нажмите клавишу ВВОД.
Щелкните правой кнопкой мыши DisableLoopbackCheck и выберите команду Изменить.
Что сделал трюк для меня был 2 - й вариант - DisableLoopbackCheckingвHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
Икар
1
Исходя из некоторого опыта настройки единого входа, я могу сказать, что IE будет автоматически передавать билет Kerberos для входа в систему, только если сайт и клиент находятся в интрасети вместе или если сайт находится в доверенной зоне. Если IE видит http://site.company.com/webservice, он будет предполагать, что сайт находится в Интернете и не будет передавать учетные данные для входа в систему.
Мы обнаружили две вещи, которые позволяют разрешить полное доменное имя в интрасети, предоставляя веб-серверу сертификат и используя SSL, или добавляя его в доверенную зону.
Это не решает проблему. Я уже пытался добавить полное доменное имя в доверенную зону, но безрезультатно. Я думаю, что это решает другую проблему. Добавление его в доверенную зону позволяет выполнять автоматическую аутентификацию, которая мне не нужна - я согласен с указанием учетных данных, но проблема в том, что он не принимает мой указанный домен для учетных данных входа - он застрял на имени компьютера.
DisableLoopbackChecking
вHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
Исходя из некоторого опыта настройки единого входа, я могу сказать, что IE будет автоматически передавать билет Kerberos для входа в систему, только если сайт и клиент находятся в интрасети вместе или если сайт находится в доверенной зоне. Если IE видит http://site.company.com/webservice, он будет предполагать, что сайт находится в Интернете и не будет передавать учетные данные для входа в систему.
По этой ссылке есть полезная информация о IIS, IE и Kerberos. http://blogs.msdn.com/b/friis/archive/2009/12/31/things-to-check-when-kerberos-authentication-fails-using-iis-ie.aspx
Мы обнаружили две вещи, которые позволяют разрешить полное доменное имя в интрасети, предоставляя веб-серверу сертификат и используя SSL, или добавляя его в доверенную зону.
Надеюсь, это поможет в связи с вашей настройкой.
источник