Я создал виртуальный каталог (IIS 7.0), который указывает на общий сетевой ресурс. Этот виртуальный каталог находится в корне моего веб-приложения.
Я пробовал использовать анонимный доступ с учетными данными домена. Кроме того, я попытался использовать олицетворение, как показано ниже ...
<identity impersonate="true" userName="<supplied username>"
password="<supplied password>" />
ПРОБЛЕМА: приложение всегда использует IUSR для подключения к этому общему ресурсу и получает сообщение «ДОСТУП ОТКЛОНЕН». Мне нужно заставить мое приложение использовать указанное выше доменное имя.
ОБНОВЛЕНИЯ
1. Во время работы procmon я вижу сообщение «FAST IO DISALLOWED» каждый раз перед отказом в доступе. Не совсем уверен, связано ли это.
2. Я подозреваю здесь симптомы Double Hop Issue. Но не знаю, как на самом деле проверить это или как обойти это, не меняя аутентификацию на Kerbros.
Спасибо!
Прежде всего, «олицетворение» - это термин, применяемый только внутри одного и того же компьютера, если ваш сетевой ресурс (или IIS, или виртуальный каталог, или MS SQL Server и т. Д.) Находится на другом компьютере, тогда это делегирование, и вы должны его настроить. между компьютерами (читайте SPN, имя участника-службы).
Ваша сетевая папка находится на том же или на другом компьютере?
Тогда это не «двойной прыжок», поскольку вы не передаете исходную идентификацию пользователя своего webapp, а используете фиксированное олицетворение в web.config.
Надеюсь, его нет в производстве? Помещение учетных данных в web.config - это ЗЛО, ЗЛО, ЗЛО, никогда не делайте этого, просто не делайте этого!
Кстати, вы можете достичь того же результата без фиксированного олицетворения в web.config, запустив свое веб-приложение в пользовательском пуле приложений под пользователем вашего домена, см. [1]. Это проще, настраиваемее и надежнее.
Я мог бы попытаться написать вам инструкции для всех возможных случаев, поскольку точный контекст в вашем сообщении размыт, но в итоге он оказался бы в нечитаемой статье на десятки страниц.
Хорошо, я начал писать:
Отключите «Анонимный доступ» и включите «Обычную проверку подлинности» в IIS (свойствах сайта)
+ Изменить
<authentication mode="None" />
к
<authentication mode="Windows" />
в web.config
Отключите «Использовать простой общий доступ к файлам» в проводнике Windows -> меню Сервис ---> Параметры папки ... ---> вкладка Вид
Предоставьте разрешения для имени пользователя в сетевой папке
Убедитесь, что NTLM включен на всех задействованных взаимодействующих компьютерах.
Пожалуйста, прочтите и следуйте инструкциям в [2].
Мне не удалось найти описание того же качества для IIS7 / W2006, но я твердо уверен, что то, что вам нужно, не изменилось.
Если у вас возникнут дополнительные вопросы или проблемы, задайте более конкретные вопросы.
----- Процитировано:
[1]
Как: создать учетную запись службы для приложения ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ms998297.aspx
[2]
Как: использовать олицетворение и делегирование в ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ff647404.aspx