Подтвердить что ты не робот

Является ли веб-приложение IIS 7.5 с проверкой подлинности Windows, чтобы конечные пользователи имели права доступа к файлам?

Краткая версия:

Для веб-приложений IIS 7.5 с проверкой подлинности Windows завершается пользователь должен иметь доступ к файлу Read?

Длинная версия:

У меня есть веб-приложение ASP.NET для интрасети, использующее проверку подлинности Windows. Он установлен на десятках разных компаний, и обычно аутентификация работает нормально: пользователи переходят на сайт, например. http://appserver/MyApp, приложение распознает, во что они вошли, и отображает страницы соответственно. Я просто установил его у нового клиента и столкнулся с проблемой:

При подключении, например, на http://appserver/MyApp Мне будет предложено ввести учетные данные Windows, но после ввода их мне будет предложено повторно. После нескольких повторных ввода учетных данных мне показана страница с ошибкой 401 с сообщением "401 - Несанкционированное: доступ запрещен из-за недопустимых учетных данных". Таким образом, он не только не проходит через мою личность, но даже при вводе имени пользователя и пароля он все еще отрицает доступ.

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

В журнале событий приложений Windows появляется сообщение "Авторизация авторизации для запроса" вместе с именем учетной записи Thread: NT AUTHORITY\NETWORK SERVICE и User: [правильная учетная запись домена пользователей рабочей станции]. Это говорит о том, что доступ к файлам выполняется с идентификатором пользователя, а не с идентификатором AppPool сетевой службы. Разумеется, если я дам разрешение на чтение и выполнение конечного пользователя (я не пробовал только чтение) в каталог приложения, тогда все будет работать правильно: когда пользователь просматривает сайт, они автоматически аутентифицируются, не запрашиваются, а веб-сайт правильно распознает их личность! Поэтому мое решение проблемы заключается в предоставлении Read и Execute разрешения для Everybody в каталоге приложений... но это не идеальное решение.

Это кажется очень странным. Я никогда не делал этого раньше в IIS 7.5, насколько я помню, и определенно никогда не нуждался в IIS 6 или IIS 7. Является ли это новой версией IIS7.5? В документации указано, что олицетворение отключено по умолчанию. Я добавил элемент в web.config, конечно, удалил права на файлы, отличные от Network Service, но проблема осталась.

Любые мысли? Нормально ли для Windows Authenticated sites в IIS 7.5 для конечных пользователей необходимы разрешения на файлы в файлах веб-сервера?

Некоторые релевантные детали:

  • Сетевая служба имеет права доступа к файлу полного доступа к папке приложения.
  • При подключении к самому серверу мне было предложено ввести учетные данные но после ввода их я аутентифицирован и приложение работает правильно, включая отображение моего входа в Windows и подключение и извлечение данных из db. Позже я решил, что это побуждает для учетных данных, потому что http://localhost находился на доверенных сайтах и поэтому не признается в качестве зоны интрасети и, следовательно, не передавая идентичность через. Я также решил, что он работает как этот идентификатор пользователя, поскольку он является администратором, у которого есть файл разрешения.
  • На веб-сервере работает Windows Server 2008 R2/IIS 7,5. На нем не было IIS, пока я не установил его. Я установил функции по умолчанию, а также Windows Authentication, ASP.NET и возможно, несколько других предметов. Отдельное приложение WCF, которое я установил использует IIS, анонимная аутентификация и .net 2.0 работает нормально этот веб-сервер.
  • Процесс установки приложения - это ручная копия файлов, создание пулов приложений IIS и веб-приложений, обновление строк подключения, и т.д.
  • Я проверил настройки безопасности IE. Было признано как в зоне интрасети, и имел опцию "Автоматический вход в систему" только в зоне интрасети ". Также в разделе" Дополнительные настройки "Была отмечена опция" Включить встроенную проверку подлинности Windows".
  • После того, как установка IIS Я запустил aspnet_regiis -i для .net 2.0 и aspnet_regiis -iru для .net 4.0.
  • Анонимная аутентификация отключено для моего приложения и Windows Authentication.
  • Приложение работает на ASP.NET v4, но есть другое приложение, которое я установил испытывая ту же проблему, что и ASP.NET v2.
  • Приложение запущено с Identity = Network Service и в 32-битном режиме.
  • Database строка подключения включает Trusted Connection=True и базу данных разрешения предоставляются учетной записи веб-сервера [domain]\[server]$ например DGM\MyServer$.
  • В IIS > Аутентификация > Аутентификация Windows > Провайдеры, в списке был Negotiate first, затем NTLM. Я попробовал переупорядочить так, чтобы NTLM был первым.
  • В журнале событий безопасности Windows были серии событий аудита безопасности Microsoft Windows: вход в систему и выход из системы. Они указали, что Logon был успешным и был отображение Идентификатора пользователя пользователя рабочей станции. Это от того времени, когда Я подключаюсь с другой рабочей станции и получаю 401 Несанкционирован после нескольких попыток.

Я вижу, что у этой проблемы была проблема здесь, но без решения. Первоначально я опубликовал в ASP, а затем IIS форумы без ответов.

Обновление: В этой статье msdn говорится

Когда проверка подлинности Windows включена, но олицетворение отключено, ASP.NET выполняет проверки доступа к файлам в авторизация файла модуль , используя учетные данные, которые отправляются из браузера (мой акцент). Олицетворение не должно быть включено, поскольку модуль FileAuthorizationModule гарантирует, что запрашивающему пользователю разрешен доступ на чтение или запись доступа к ресурсу, в зависимости от глагола запроса (например, GET или POST) перед выполнением запроса. Это относится к любым запросам, которые вводят управляемый код. В более ранних версиях ASP.NET доступ к файлам на основе URI, таких как "Default.aspx", вызвал проверку доступа. В приложениях ASP.NET MVC, где доступ к ресурсам обычно выполняется с использованием URL-адресов без продолжения, эта проверка обычно не применяется, потому что нет физического файла для проверки. В этом случае класс FileAuthorizationModule возвращается к проверке списков управления доступом (ACL) для этой папки.

Это означает, что конечный пользователь нуждается в разрешениях для файлов (в случае .aspx) или в папке (для MVC)... хотя все же это кажется слегка спрятанным и не определенным. В этой статье о пулах приложений говорится, что они используются как идентификатор для защиты ресурсов, что противоречит идее предоставления привилегий конечным пользователям. Если правила не отличаются для пулов приложений и NETWORK SERVICE, что может быть так, но было бы удивительно.

4b9b3361

Ответ 1

Короткий ответ НЕТ. Вы не обязаны предоставлять разрешения доступа к файлам при использовании проверки подлинности Windows в IIS 7.0 и IIS 7.5.

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

Для тех, кто имеет дело с этой проблемой, или если вы создаете новый сервер IIS7/IIS7.5 и/или переходите от IIS 6, вот статья, которая дает вам все параметры и конфигурации Windows, которые должны быть изменен, чтобы избежать предоставления доступа к файлам отдельным лицам или группам.

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

http://weblogs.asp.net/owscott/iis-using-windows-authentication-with-minimal-permissions-granted-to-disk

В дополнение к информации в этой статье, пожалуйста, имейте в виду, что IIS 7.5 не использует теги веб-конфигурации для system.web(по крайней мере, не в моем приложении MVC 4).

Он ищет теги system.webserver для настройки авторизации (где вам нужно будет указать домен Windows\группы, к которому пользователь должен быть подключен для доступа к вашему приложению).

- DSB

Ответ 2

Доступны ли пользователям, прошедшим проверку подлинности, папку приложения?

enter image description here

Ответ 3

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

Есть два параметра IIS, которые управляют этим:

Учетные записи физического пути Учетные записи физического пути Тип входа

По умолчанию для учетных данных физического пути установлено значение "Пользователь приложения" (Сквозная аутентификация). Это означает, что IIS не делает никаких олицетворения при обработке запросов Windows Authentication. Это может, однако, должен быть установлен конкретным пользователем (хотя, к сожалению, идентификатор пула приложений, который был бы идеальным). Физический путь Тип входа в учетную запись устанавливается по умолчанию Clear-Text. Для моего тестирования Я установил это в Interactive (хотя это может быть неправильное значение). Возможные значения: Clear-Text, Batch, Interactive и Network.

Чтобы установить это, я сделал следующее:

  • Создал локальную учетную запись (IIS-AccessUser)
  • Предоставленный IIS-AccessUser читает и выполняет доступ к/home-директории сайта.
  • Добавлен IIS-AccessUser в группу IIS_IUSRS (необходим для доступа к временным файлам .NET)
  • Установите IIS-AccessUser в качестве учетных данных физического пути
  • Установить учетные данные физического пути Тип входа в интерактивный

Выполнение вышеизложенного позволило мне войти в приложение напрямую, без необходимости разрешать Authenticated Users, или мне нужно быть член любой из групп в папке /home. Он также по-прежнему сохраненные роли авторизации .NET, поэтому я до сих пор не мог получить доступ к частям сайта, на который мне не разрешили.