ASP - Передача контекста безопасности
Передача контекста безопасности
Windows устанавливает контекст безопасности для каждого пользователя, вошедшего в систему. Когда IIS получает запрос от клиента, он проверяет подлинность запроса и олицетворяет клиента. Пока IIS олицетворяет клиента, IIS действует в границах контекста безопасности подлинного клиента. Контекст безопасности может изменяться на протяжении различных этапов обработки запроса, в зависимости от характера клиентского запроса. Приведенный ниже рисунок иллюстрирует различные контексты безопасности, которые могут участвовать в обработке запросов.
Контекст безопасности процесса IIS (inetinfo) известен как LocalSystem. Однако когда IIS обрабатывает запрос клиента, IIS олицетворяет контекст клиента, сформировавшего запрос. Если подлинность клиента проверялась с помощью анонимной схемы, контекст безопасности будет IUSR_ИмяКомпьютера для приложений в процессе и IWAM_ИмяКомпьютера для приложений, выполняемых в изолированном процессе. Если подлинность клиента проверялась по любой другой схеме, контекст безопасности будет сопоставлен с индивидуальной учетной записью клиента.
Если экземпляр компонента COM создается с помощью ASP, компонент COM унаследует контекст безопасности у файла.asp, который его создал. Когда IIS уничтожает экземпляр компонента, в большинстве случаев используется контекст безопасности файла .asp. Однако существует по крайней мере один случай, когда этого не происходит. Если компонент COM имел сеанс областью определения (то есть, Session("mysesscomp") = Server.CreateObject("MyComps.Comp1")), а время ожидания сеанса истекло до уничтожения компонента, IIS попытается уничтожить объект с помощью своего контекста безопасности (LocalSystem), а не контекста клиента, обратившегося к файлу .asp. Если компонент обращался к защищенным ресурсам и не освободил их, этот сценарий может дать побочный эффект в системе.