Вот идентификаторы пользователей, которые использует мой веб-сайт:
Выполнен вход: NT AUTHORITY \ NETWORK SERVICE (вообще не может записывать файлы)
и
Не вошел в систему: WSW32 \ IUSR_77 (может записывать файлы в любая папка)
У меня есть веб-сайт ASP.NET 4.0 на общем хостинге. Веб-сервер IIS7 работает в интегрированном режиме с включенной поддержкой 32-разрядных приложений и MSSQL 2008. Использование классического режима не вариант, поскольку мне нужно защитить некоторые статические файлы, и я использую маршрутизацию.
В моем файле web.config я установил следующее:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
Моя хостинговая компания утверждает, что олицетворение включено по умолчанию на уровне компьютера, поэтому я не могу это изменить.
Я попросил их поддержки, и они направили меня к этой статье: http://www.codinghub.net/2010/08/differences-between-integrated-mode-and.html
Ссылаясь на эту часть:
Различные идентификаторы Windows при проверке подлинности с помощью форм
Когда приложение использует проверку подлинности с помощью форм и разрешен анонимный доступ, удостоверение в интегрированном режиме отличается от удостоверения в классическом режиме следующим образом:
* ServerVariables["LOGON_USER"] is filled. * Request.LogognUserIdentity uses the credentials of the [NT AUTHORITY\NETWORK SERVICE] account instead of the [NT AUTHORITY\INTERNET USER] account.
Это происходит из-за того, что проверка подлинности выполняется в один этап в интегрированном режиме. И наоборот, в классическом режиме проверка подлинности выполняется сначала в IIS 7.0 с использованием анонимного доступа, а затем в ASP.NET с использованием проверки подлинности с помощью форм. Таким образом, результатом аутентификации всегда является один пользователь - пользователь аутентификации с помощью форм. AUTH_USER / LOGON_USER возвращает этого же пользователя, поскольку учетные данные пользователя с проверкой подлинности с помощью форм синхронизируются между IIS 7.0 и ASP.NET.
Побочным эффектом является то, что LOGON_USER, HttpRequest.LogonUserIdentity и олицетворение больше не могут получить доступ к учетным данным анонимного пользователя, которые IIS 7.0 аутентифицировал бы в классическом режиме.
Как мне настроить мой веб-сайт так, чтобы он мог использовать правильную личность с соответствующими разрешениями?
Я искал все ответы по этой конкретной проблеме, но пока не нашел ...
Я надеюсь, что вы можете помочь!
[Удар]
Impersonation i = new Impersonation("FTPusername","some.ip.address.v4","FTPpassword");
Спасибо! 21.08.2013