Iis проверка подлинности windows не работает

Обновлено: 04.07.2024

проверка подлинности IIS

  • Отключить Анонимную Проверку Подлинности
  • Включить Проверку Подлинности Windows

Это сделало хорошую работу по включению проверки подлинности Windows, но каждая попытка входа в систему была отклонена и в конечном итоге возвращается ошибка 401.1. С этого и началась проблема. Кажется, есть много причин для этого, которые хорошо документированы в интернете, включая здесь переполнение стека.

Я бы попробовал:

но все безрезультатно, ужасный 401.1 остался.

это действительно случай "не вижу леса для деревьев". Ни одно из решений, которые мне удалось найти (назовите это случаем плохих параметров поиска, если хотите), не сработало для меня поэтому я подумал, что стоит опубликовать этот вопрос, чтобы, надеюсь, дать четкий ответ, который легче найти для тех, кто страдает от той же проблемы.

проблема здесь в том, что современные версии Windows (Windows XP SP2, Windows Server 2003 SP1 и выше) включают функцию безопасности обратной проверки, которая предназначена для предотвращения атак отражения на вашем компьютере. Таким образом проверка подлинности завершается ошибкой, если FQDN или пользовательский заголовок узла, который используется не соответствует имени локального компьютера.

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

  1. установите для параметра реестра DisableStrictNameChecking значение 1. См.: 281308(Примечание: это должно быть ненужным для Windows Server 2008 и Vista и позднее)
  2. в Редакторе реестра найдите и выберите следующий раздел реестра : Раздел HKEY_LOCAL_MACHINE\система\CurrentControlSet на\контроль\ЛСА\мыши раздел msv1_0
  3. щелкните правой кнопкой мыши MSV1_0, выберите Создать, а затем щелкните многострочное значение.
  4. тип BackConnectionHostNames, а затем нажмите клавишу Ввод.
  5. щелкните правой кнопкой мыши BackConnectionHostNames и выберите команду Изменить.
  6. в поле Значение введите имя узла или имена узлов для узлов на локальном компьютере и нажмите кнопку ОК.
  7. закройте редактор реестра и перезапустите службу IISAdmin.

полную информацию о том, как это сделать, можно найти на MSDN: 896861

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

Я хочу добавить комментарий Майкла Дарка в качестве ответа, потому что у меня нет разрешений на изменение моего реестра, поэтому ответ Пита не работает для меня, но я смог решить проблему.

переустановите функции IIS еще раз и убедитесь, что установлен флажок проверки подлинности WINDOWS.

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

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

Я добавил локального пользователя сети, чтобы иметь доступ на чтение к папке inetpub на сервере, и теперь он не запрашивает вход в систему с IE 8. Но в chrome я получаю эту ошибку "Ошибка 338 (net :: ERR_INVALID_AUTH_CREDENTIALS): Неизвестная ошибка.".

Он находится в зоне наших интранет-сайтов. Я должен был это заявить, но я забыл. Сайт раньше работал на нашем старом сервере разработки, но когда я обновился до Win 2008 R2 с IIS 7.5, он перестал работать. Раньше был на 2003 с IIS 6.0.

Мне интересно, есть ли у кого-нибудь идеи, что еще я могу попробовать. На данный момент я в основном крутлю свои колеса.

Я испробовал все решения по ссылкам ниже, и ни одно из них не устранило проблему

Я нашел ответ на это. Это параметр конфигурации, который не отображается в графическом интерфейсе. Мне пришлось зайти в файл конфигурации хоста приложения, расположенный по адресу <% SystemDrive%> /Windows /System32 /inetsrv /config, и изменить указанные ниже параметры.

настройки по умолчанию, где

<windowsAuthentication enabled="true"> <providers> <add value="Negotiate" /> </providers> </windowsAuthentication>

Изменилось на это, и это сработало.

<windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true"> <providers> <add value="NTLM" /> </providers> </windowsAuthentication>

Примечание по теме: Если вы пытаетесь реплицировать свой сайт на локальном хосте, а проверка подлинности Windows включена и по-прежнему не работает, решение заключается в некотором взломе реестра, чтобы избежать проверки на обратную петлю:

Используя regedit, перейдите к HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0 Добавьте новое значение Multi-String для MSV1_0 и назовите его BackConnectionHostNames Добавьте имена хостов, которые вы хотите использовать. Пример "mysite.com". Перезагрузите IIS.

Значение должно быть именем сайта в вашем файле хостов Windows.

Кроме того, чтобы получить доступ к папке без аутентификации /data с использованием PHP file_get_contents, мне пришлось добавить это в файл applicationHost.config, чтобы избежать ошибок 401.

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

У меня была похожая проблема, и она была устранена путем добавления группы пользователей (MYDOMAIN \ Users) в физическую папку приложения с разрешениями на чтение.

У меня есть похожая проблема, которая решается только путем перемещения NTLM поверх Kerberos в поставщиках, как объяснил Рори, или путем изменения DNS. Проблема возникает только в IIS7, когда заголовок узла веб-сайта существует как CNAME (псевдоним) в DNS. в IIS6 встроенная проверка подлинности Windows по умолчанию использует только NTLM. в IIS7 IWS по умолчанию использует Kerberos до NTLM. Замена записи CNAME записью A решает проблему. У Kerberos нет проблем с записями A в DNS, но есть проблемы с псевдонимами.

Таким образом, DNS-имена CNAME, по-видимому, несовместимы с Kerberos в Windows 2008.

Если браузер запрашивает учетные данные, я думаю, что ваши учетные данные пула приложений не имеют доступа к некоторым ресурсам на вашей странице. Вы пытались создать пустую HTML-страницу и получить доступ к этой странице?

У меня похожая проблема.

У меня на веб-сайте по умолчанию было приложение, в котором уже была включена проверка подлинности Windows, но оно не работало. Я решил отключить анонимную проверку подлинности на веб-сайте по умолчанию, а также включить проверку подлинности Windows на веб-сайте по умолчанию.

Сценарии прокси-сервера и подсистемы балансировки нагрузки

Проверка подлинности Windows — это сценарий с отслеживанием состояния, который в основном используется в интрасети, где прокси-сервер или балансировщик нагрузки обычно не обрабатывал трафик между клиентами и серверами. Если используется прокси-сервер или балансировщик нагрузки, проверка подлинности Windows работает только в том случае, если прокси-сервер или балансировщик нагрузки:

  • Обрабатывает проверку подлинности.
  • Передает сведения о проверке подлинности пользователя в приложение (например, в заголовке запроса), которое действует на данные проверки подлинности.

Альтернативой проверки подлинности Windows в средах, где используются прокси-серверы и подсистемы балансировки нагрузки, — Active Directory Федеративные службы (ADFS) с OpenID Connect Connect (OIDC).

IIS/IIS Express

Добавьте службы проверки подлинности, вызвав AddAuthentication ( Microsoft.AspNetCore.Server.IISIntegration пространство имен) в Startup.ConfigureServices :

Параметры запуска (отладчик)

Настройка параметров запуска влияет только на Свойства и launchSettings.jsв файле для IIS Express и не НАСТРАИВАЕТ службы IIS для проверки подлинности Windows. Конфигурация сервера описывается в разделе IIS .

Новый проект

Запустите приложение. Имя пользователя отображается в пользовательском интерфейсе отображаемого приложения.

Существующий проект

Свойства проекта включают проверку подлинности Windows и отключение анонимной проверки подлинности:

  1. В обозревателе решений щелкните проект правой кнопкой мыши и выберите пункт Свойства.
  2. Выберите вкладку Отладка.
  3. Снимите флажок включить анонимную проверку подлинности.
  4. Установите флажок включить проверку подлинности Windows.
  5. Сохраните и закройте страницу свойств.

Кроме того, свойства можно настроить в iisSettings узле launchSettings.jsв файле:

Новый проект

Существующий проект

Обновите iisSettings узел launchSettings.jsв файле:

При изменении существующего проекта убедитесь, что файл проекта содержит ссылку на пакет для пакета NuGet Microsoft. AspNetCore. app метапакет или Microsoft. AspNetCore. Authentication .

Включите службу роли IIS для проверки подлинности Windows. Дополнительные сведения см. в разделе Включение проверки подлинности Windows в службах РОЛЕЙ IIS (см. шаг 2).

Используйте один из следующих подходов:

Перед публикацией и развертыванием проекта добавьте следующий файл web.config в корневой каталог проекта:

После публикации и развертывания проекта выполните настройку на стороне сервера с помощью диспетчера IIS.

  1. В диспетчере служб IIS выберите сайт IIS в узле сайты на боковой панели подключения .
  2. Дважды щелкните Проверка подлинности в области IIS .
  3. Выберите Анонимная проверка подлинности. На боковой панели действия выберите Отключить .
  4. Выберите параметр Проверка подлинности Windows. Выберите включить на боковой панели действия .

Когда выполняются эти действия, Диспетчер IIS изменяет файл web.config приложения. <system.webServer><security><authentication> Узел добавляется с обновленными параметрами для anonymousAuthentication и windowsAuthentication :

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

  • Используйте диспетчер IIS для сброса параметров в файле web.config после того, как файл будет перезаписан при развертывании.
  • Добавьте файлweb.config в приложение локально с параметрами.

Kestrel

Пакет NuGet Microsoft. AspNetCore. Authentication. Negotiate можно использовать с Kestrel для поддержки проверки подлинности Windows с помощью Negotiate и Kerberos в Windows, Linux и macOS.

Учетные данные могут быть сохранены в запросах к соединению. Проверка подлинности Negotiate не должна использоваться с прокси, если только прокси-сервер не поддерживает сопоставление соединения 1:1 (постоянное подключение) с Kestrel.

Добавьте службы проверки подлинности, вызвав AddAuthentication и AddNegotiate в Startup.ConfigureServices :

Добавьте по промежуточного слоя проверки подлинности, вызвав UseAuthentication в Startup.Configure :

Конфигурация среды Windows

Конфигурация среды Linux и macOS

Инструкции по присоединению компьютера Linux или macOS к домену Windows доступны в статье подключение Azure Data Studio к SQL Server с помощью проверки подлинности Windows — Kerberos . Эти инструкции создают учетную запись компьютера для компьютера Linux в домене. Имена участников-служб должны быть добавлены в эту учетную запись компьютера.

При выполнении рекомендаций, приведенных в разделе подключение Azure Data Studio к SQL Server с помощью проверки подлинности Windows — Kerberos , замените python-software-properties на python3-software-properties при необходимости.

После присоединения компьютера Linux или macOS к домену необходимо выполнить дополнительные действия, чтобы предоставить keytab- файл с именами участников-служб:

Файл keytab содержит учетные данные доступа к домену и должен быть защищен соответствующим образом.

Авторизация пользователей

Состояние конфигурации анонимного доступа определяет способ [Authorize] [AllowAnonymous] использования атрибутов и в приложении. В следующих двух разделах объясняется, как управлять состояниями запрещенных и разрешенных конфигураций анонимного доступа.

Запретить анонимный доступ

Если включена проверка подлинности Windows, а анонимный доступ отключен, [Authorize] [AllowAnonymous] атрибуты и не действуют. Если сайт IIS настроен для запрета анонимного доступа, запрос никогда не достигнет приложения. По этой причине [AllowAnonymous] атрибут неприменим.

Разрешить анонимный доступ

Олицетворение

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

Хотя пакет Microsoft. AspNetCore. Authentication. Negotiate включает проверку подлинности в Windows, Linux и macOS, олицетворение поддерживается только в Windows.

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

Включение проверки подлинности

Любой метод проверки подлинности или их комбинация могут быть включены для любого веб- или FTP-узла, виртуального каталога или файла.

Чтобы включить метод проверки подлинности для WWW

  1. Создайте учетную запись пользователя, соответствующую методу проверки подлинности. Если целесообразно, добавьте учетную запись в группу пользователей Windows. Более подробные сведения о создании учетных записей Windows см. в разделе Защита файлов средствами NTFS.
  2. Сконфигурируйте разрешения NTFS для каталога или файла, доступом к которым необходимо управлять. Дополнительные сведения см. в разделе Задание разрешений NTFS для каталога или файла.
  3. В оснастке IIS выберите веб-узел, каталог или файл и откройте вкладки его свойств.
  4. Выберите соответствующую вкладку: Безопасность файла или Безопасность каталога. В группе Анонимный доступ и проверка подлинности нажмите кнопку Изменить.
  5. В диалоговом окне Способы проверки подлинности выберите один или несколько способов.

Чтобы включить метод проверки подлинности для FTP

  1. Выполните шаги 1-3 процедуры, описанной выше.
  2. Выберите вкладку Безопасные учетные записи. Установите флажок Разрешить анонимные подключения.

Примечание. Для FTP проверка подлинности может быть установлена только на уровне узла.

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

Примечание

  • Анонимная и встроенная проверка подлинности Windows выбраны по умолчанию.
  • И краткая, и встроенная проверка подлинности имеют приоритет перед обычной проверкой. Чтобы гарантировать проверку подлинности всех пользователей только обычной проверкой, сбросьте все остальные флажки.
  • Краткая и встроенная проверки подлинности не могут быть использованы для узлов FTP.

Веб-сервер будет использовать обычную, краткую и встроенную проверку подлинности только при выполнении следующих условий:

  • Анонимный доступ не разрешен.
  • Попытка анонимного доступа оказалась неудачной или доступ к файлам и каталогам ограничен разрешениями NTFS.

Важно! При попытке изменить свойства веб-узла или виртуального каталога, веб-сервер запросит разрешение сбросить свойства отдельных подкаталогов или файлов, расположенных на этом узле или в каталоге. Если такое подтверждение получено, предыдущие значения свойств будут заменены новыми. Дополнительные сведения о настройке свойств см. в разделе «Свойства и наследование свойств на узлах» раздела О веб- и FTP-узлах.

Конфигурирование анонимной проверки подлинности

По умолчанию пользователь IUSR_ИмяКомпьютера включается Windows в группу пользователей «Гости». Может быть создано несколько учетных записей анонимных пользователей, по одной на каждый веб- или FTP-узел, каталог или файл. Предоставляя этим учетным записям различные права на доступ или назначая эти учетные записи разным группам пользователей, можно предоставить анонимным пользователям доступ к различным областям веб- и FTP-узлов.

Учетная запись анонимного пользователя должна давать пользователю права локального подключения. Если учетная запись не имеет права «Локальный вход в систему», IIS не сможет обслуживать никакие анонимные запросы. В контроллерах домена учетная запись IUSR_ИмяКомпьютера по умолчанию не имеет права «Локальный вход в систему»; чтобы разрешить анонимные подключения, ей нужно предоставить его.

Можно также изменить привилегии безопасности для учетной записи IUSR_Имя_компьютера в Windows. Однако если учетная запись анонимного пользователя не дает права доступа к определенному ресурсу, веб-сервер не установит анонимное соединение с этим ресурсом. Дополнительные сведения см. в разделе Задание разрешений для веб-сервера.

Чтобы изменить учетную запись, используемую для анонимной проверки подлинности

  1. В оснастке IIS выберите веб-узел, каталог или файл и откройте вкладки его свойств.
  2. Выберите соответствующую вкладку: Безопасность файла или Безопасность каталога. В группе Анонимный доступ и проверка подлинности нажмите кнопку Изменить.
  3. В диалоговом окне Способы проверки подлинности в группе Анонимный доступ нажмите кнопку Изменить.
  4. В диалоговом окне Учетная запись анонимного пользователя либо введите действительную учетную запись пользователя Windows, которую нужно использовать для анонимного доступа, либо выберите ее с помощью кнопки Обзор.
  5. Сбросьте флажок Разрешить управление паролем из IIS, чтобы ввести пароль этой учетной записи.

Важно! Если изменить учетную запись IUSR_ИмяКомпьютера, изменения коснутся каждого анонимного запроса, который обслуживается веб-сервером. Будьте внимательны при изменении этой учетной записи.

Конфигурирование обычной проверки подлинности

Включение обычной проверки подлинности не приводит к автоматическому включению проверки подлинности пользователей на веб-сервере. Должны быть созданы учетные записи пользователей Windows и установлены разрешения NTFS (как это описано выше).

Чтобы правильно проверять подлинность пользователей обычным методом, учетные записи пользователей Windows, используемые для обычной проверки подлинности, должны иметь право «Локальный вход в систему». Это право должно быть назначено, поскольку обычная проверка подлинности имитирует локального пользователя (то есть, пользователя, который физически подключен к серверу). По умолчанию учетным записям пользователей на основном контроллере домена Windows (PDC) не предоставляется право локального входа в систему.

Примечание. Требования для права локального входа в систему могут быть изменены с помощью Active Directory Service Interfaces (ADSI). Для получения дополнительной информации см. раздел LogonMethod в руководстве по Active Server Pages.

Необходимо установить стандартный домен для входа. Дополнительные сведения см. в разделе Задание стандартного домена для входа.

Внимание! Обычный метод проверки подлинности передает имена пользователей и пароли по сети в незашифрованном виде. Компьютерные взломщики могут использовать средства слежения за сетью для перехвата этой информации. В сочетании с обычной проверкой подлинности можно использовать возможности шифрования веб-сервера, чтобы обезопасить учетную информацию пользователя при передаче по сети. Дополнительные сведения см. в разделе О шифровании.

Конфигурирование краткой проверки подлинности

Microsoft Internet Explorer версии 5 является единственным обозревателем, поддерживающим в настоящее время краткую проверку подлинности.

Краткая проверка подлинности будет функционировать только на доменах, контроллеры которых управляются операционной системой Windows 2000. Контроллер домена должен иметь копии используемых паролей в виде обычного текста, поскольку он должен выполнить операцию хэширования и сравнить результат со значением хэша, переданного обозревателем на компьютере пользователя. Дополнительные сведения о хранении этих паролей и по другим вопросам см. в документации Windows 2000 Server.

Важно! Поскольку контроллер домена хранит копии паролей в виде обычного текста, он должен быть защищен от физической и сетевой атак. Для получения более подробной информации о защите контроллера домена см. пакет Microsoft Windows 2000 Server Resource Kit.

Конфигурирование встроенной проверки подлинности Windows

Встроенная проверка подлинности Windows не работает через прокси-серверы и другие брандмауэры.

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

Только обозреватель Microsoft Internet Explorer версии 2.0 или более поздней поддерживает встроенную проверку подлинности.

Читайте также: