Почему я не могу получить доступ к содержимому c с аутентификацией Windows в IIS - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь следовать рекомендациям по безопасности в IIS для своего веб-сайта ASP. NET, поэтому у меня есть следующие настройки:

  1. Выделенный интегрированный AppPool (v4.0) который аутентифицируется с помощью AppPoolIdentity
  2. Сайт только с Windows Аутентификация включена (анонимная аутентификация отключена), Расширенная защита установлена ​​на Обязательно
  3. Группа AppPoolIdentity и Local Administrators имеют доступ только для чтения к папке веб-сайта

Я могу получить доступ к своему веб-сайту в браузере, Windows автоматически отправляет текущие учетные данные, и мой контроллер обслуживает Посмотреть. Теперь проблема заключается в том, что любое содержимое c, которое не обслуживается Контроллером, например. js,. css и изображения, не загружается.

Что я наблюдал:

  • Если я получаю доступ к содержимому stati c напрямую (например, website.com/js/script.js), Chrome запрашивает учетные данные
  • Если предоставлены правильные учетные данные, он отклоняет и спрашивает снова и снова
  • Если всплывающее окно отменено, 401.3 - неавторизовано ошибка замечена
  • Я не уверен, что она здесь задействована, но Stati c Content функция установлена ​​
  • Я использовал Sysinternals Process Monitor, чтобы увидеть, что происходит под капотом, и я заметил, что когда в браузере я запрашиваю View, представление Доступ к AppPoolIdentity, однако, когда я запрашиваю stati c контент, приложение пытается получить к нему доступ с моей текущей Windows Identity, которая, очевидно, не имеет доступа к физической папке

та же проблема, что описана в * 1 037 *https://forums.iis.net/t/1172827.aspx?Windows+Authentication+cant+load+images, за исключением того, что группы «Прошедшие проверку», «Системный» и «Веб-серверы» в действительности не нуждаются в доступе NTFS к папке. На этом форуме решение так и не было найдено.


Вопрос в том, почему это происходит и как я могу изменить свою конфигурацию, чтобы я по-прежнему придерживался лучших рекомендаций (анонимная аутентификация не вариант, Также нельзя предоставить всем пользователям доступ к фактической папке с содержимым stati c на сервере), но в то же время безболезненно предоставлять пользователям stati c content.

Насколько я понимаю, что Windows Аутентификация должна аутентифицировать пользователя в приложении и сообщать приложению, что это я, но не должна участвовать в манипуляциях на уровне ACL.

UPDATE : Я обнаружил, что файлы. js и. css могут обслуживаться с использованием ASP. NET MVC Связывание, в данном случае, насколько я понимаю, они подаются вместе с представлением, поэтому никакого дополнительного HTTP Запросы обязательны. Тем не менее, я до сих пор не знаю, что мне делать с изображениями.

...