Говоря о безопасности IIS 7.5, AFAIK:
Идентификация пула приложений решает кому мое веб-приложение работает как.
Метод проверки подлинности решает кому клиенты аутентифицируются как.
У меня виртуальная папка настроена следующим образом:
Но оказывается, что я не могу просматривать файлы в этой папке. Как только я дам учетной записи XXX доступ к этой папке, все идет хорошо.
Итак, какую роль играет идентификация пула приложений в анонимной аутентификации? Совершенно неожиданно, что я должен дать учетной записи App Pool Identity разрешение на доступ к папке. Я думал, анонимной аутентификации будет достаточно?
Спасибо.
Здесь много перегруженных терминов и разница между IIS 7 и 7.5.
Начнем с идентификатора пула приложений (строчная буква I, также известная как Аккаунт пула приложений):
Как я это говорю, Учетная запись пула приложений используется ли учетная запись для ботинок пул приложений и идентичность, которую принимает пул приложений, когда он не олицетворяет кого-либо еще.
Итак, какую бы личность вы ни присвоили пулу приложений, он должен уметь читать файлы в папке содержимого: особенно {но не ограничиваясь} любыми файлы web.config (которые являются частью конфигурации IIS и управляют тем, что будет делать пул приложений).
Если он не может получить доступ к папке, он предположит, что там может быть важный (изменяющий игру) файл web.config, и отобразит ошибку. Итак, для учетной записи пула приложений требуется Читать доступ ко всем папкам с содержимым.
Зачем отличать учетную запись пула приложений (идентификатор пула приложений) от идентификатора пула приложений? Потому что специальные заглавные буквы используются ApplicationPoolIdentity это новая учетная запись тип - управляемая учетная запись службы - введена и сделана по умолчанию в IIS 7.5 / Windows 2008 R2, а также доступна в Windows 2008 SP2 (но не по умолчанию).
Видеть Удостоверения пула приложений в IIS.Net
Когда вы создаете веб-сайт под R2 с помощью графического интерфейса:
В RTM 2008 года учетной записью пула приложений по умолчанию была сетевая служба. плюс уникальный идентификатор / уникальный идентификатор пула приложений; новый R2 / SP2 AppPoolIdentity тип аккаунта это сетевая служба-лайк аккаунт (то есть компьютер при подключении вне коробки), но предотвращает олицетворение другого пула приложений в том же поле.
Учетная запись пула приложений определяет ВОЗ ваше приложение работает как когда он не выдаёт себя за кого-то ещё
Метод проверки подлинности описывает как вы собираетесь аутентифицировать клиентов (чтобы выдать себя за них)
В Анонимный аккаунт пользователя определяет, от кого вы собираетесь работать при олицетворении пользователя для запроса, который не аутентифицирован - таким пользователем является IUSR.
Кстати, в IIS 7.5 вы можете установить учетную запись анонимного пользователя как удостоверение пула приложений (свойства метода анонимной проверки подлинности), что может упростить изоляцию и защиту содержимого для данного веб-сайта.
Установите разрешения с помощью IIS AppPool \ YourSiteName для формата имени. (смотрите также эта почта)
Вы видите две вещи, которые обычно путают в ASP.NET:
Объяснение: Во-первых, «аутентификация» в ASP.NET - это просто событие, обычно настраиваемое в web.config, которое регистрирует заданную учетную запись пользователя, которая передается как токен пользователя II в ASP.NET как простой объект HttpContext ... т.е. текущий сеанс или контекст текущего пользователя. Фактически он не меняет WindowsIdentity, на котором запущен процесс ASP.NET, а просто передает ему токен идентификатора пользователя. Используя HttpContext, ваш код может использовать этот идентификатор или имя для хранения прав базы данных в различных разделах вашего веб-сайта. Но это не повлияет на доступ к файлам в ASP.NET, потому что не влияет и не изменяет идентичность фактической учетной записи «процесса» приложения, которая запускает ASP.NET под II.
Этого не произойдет, пока вы не выполните «Impersonation», который сообщает ASP.NET олицетворять любой токен, переданный ему II, и затем запускаться под этим идентификатором учетной записи. Вы можете установить олицетворение в своем web.config. Когда вы активируете олицетворение в ASP.NET, тогда WindowsIdentity действительно изменяется в рабочем процессе на любую аутентифицированную учетную запись, переданную в ASP.NET из IIS, и затем вы можете получить доступ к файлам, конечно, в зависимости от того, какие права вы назначаете этой учетной записи. Важно отметить, что когда это происходит, это временно, и ASP.NET может вернуться к своему идентификатору процесса по умолчанию, который в текущих версиях II снова является учетной записью идентификатора пула приложений, назначенной данному пулу приложений.
Когда IIs просто использует простую анонимную учетную запись пользователя без явной аутентификации, установленной в ASP.NET, IIs запускает по умолчанию назначенную веб-сайту учетную запись пула приложений пула приложений и передает ее в ASP.NET и выполняющий ее рабочий процесс. Эта учетная запись удостоверения пула приложений обрабатывает все запросы для IIS и запускает ASP.NET для этого сайта.
Когда IIs запускается в соответствии с этой настройкой и к нему обращается пользователь, он фактически аутентифицирует за кулисами по умолчанию анонимную учетную запись IUSR, которая определяет доступ к веб-страницам и другим базовым ресурсам. Но эта учетная запись НЕ передается в ASP.NET. И это не влияет на идентификацию пула приложений, в которой работает IIS и под которой работает ASP.NET.
Если вы установите для Impersonate значение «true», скажем, в своем web.config, И вы используете анонимную учетную запись IUSR по умолчанию в II для общего доступа, И вы явно установите значение true для свойства anonymousAuthentication в web.config (вместо использования Windows или другую учетную запись для входа), II будут отбрасывать идентификатор пула приложений и II, а ASP.NET теперь будет запускать свои процессы приложений как анонимная учетная запись, аутентифицированная и олицетворенная IUSR.
Когда вы это сделаете, ASP.NET и его процессы теперь будут работать под учетной записью IUSR ... то есть процесс приложений ASP.NET будет запускать свою учетную запись WindowsIdentity как учетную запись IUSR. Теперь вы можете применить доступ для чтения / записи к этой анонимной учетной записи IUSR и к папкам, к которым эта учетная запись должна иметь доступ. (Примечание: не забудьте, однако, добавить учетную запись процесса по умолчанию, учетную запись пула приложений для пула, а также права на эти папки. Это соответствует рекомендации Microsoft)
Удачи!
В игре есть два контекста аутентификации. Процесс веб-сервера (который обрабатывает ваши веб-запросы) запускается от имени пользователя App Pool Identity. Когда поступает запрос для вашего виртуального хоста, пул приложений олицетворяет пользователя, указанного в «Учетных данных анонимной аутентификации» конкретного сайта - по умолчанию IUSR.
Любые скрипты, запускаемые из вашего веб-сайта, будут выполняться как IUSR, но ведение журнала и некоторые другие функции будут выполняться от имени пользователя пула приложений (по умолчанию сетевая служба - хотя недавно это было изменено для использования специального пользователя пула виртуальных приложений). Идентификатор пула приложений (сетевая служба) должен иметь возможность перечислять файлы в вашем каталоге, поскольку определенные проверки выполняются в стеке запросов перед передачей управления вашему скрипту.
Хорошей практикой является запуск одного сайта на пул и установка идентификатора пула приложений для запуска от имени того же пользователя, что и анонимный пользователь вашего сайта. Можно выйти из контекста анонимного пользователя (IUSR) и повысить привилегии до уровня удостоверения самого пула приложений.