Я сделал сайт интрасети ASP.NET MVC 3 с включенной аутентификацией Windows:
- в свойствах файла проекта Visual Studio
- в web.config, т.е.
<authentication mode="Windows"/>
- на свойствах сайта в IIS 7.5. Сервер
Анонимный доступ отключен для всех этих трех выше, web.config говорит <deny users="?"/>
. Олицетворение отключено в файле web.config с идентификатором <impersonate="false"/>
и в свойствах сайта на сервере IIS 7.5. И, наконец, NETWORK SERVICE настроен для запуска пула приложений, а также имеет папку «Читать в папке сайта» (хотя вы не уверены, нужна ли она вам, вы говорите мне, но этого недостаточно для решения моей проблемы ниже).
Теперь при входе в систему через стандартное диалоговое окно Аутентификация Windows пользователям домена выдается ошибка 401.3 после трех действительных попыток входа в систему. Кажется, это происходит еще до того, как я получил код моего сайта MVC, то есть он полностью связан с IIS. Журнал событий предоставляет следующий вид записи (это информационная запись, а не ошибка, и я немного запутал ее для защиты своего клиента) для всех пользователей, которые пытались войти в систему:
Event code: 4008
Event message: File authorization failed for the request.
Event time: 2012-02-20 18:45:41
Event time (UTC): 2012-02-20 17:45:41
Event ID: 6dd3b4bf99784ba1a0fe06694dd89691
Event sequence: 3
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/2/ROOT-1-129742335229554599
Trust level: Full
Application Virtual Path: /
Application Path: D:\Public\BlahblahManager\
Machine name: HUB01-XYZ123
Process information:
Process ID: 2920
Process name: w3wp.exe
Account name: NT AUTHORITY\NETWORK SERVICE
Request information:
Request URL: http://blahblahmanager.user.ad.blah.com/
Request path: /
User host address: 134.XXX.XXX.XXX
User: USER-AD\teh-user
Is authenticated: True
Authentication Type: Negotiate
Thread account name: NT AUTHORITY\NETWORK SERVICE
Custom event details:
Только когда я специально предоставляю USER-AD\teh-user
или USER-AD\Domain
пользователям разрешение Read
на корневую папку сайта (D: \ Public \ BlahblahManager), пользователь может войти в систему и фактически увидеть сайт.
Почему это? Там должна быть какая-то конфигурация, которую я пропускаю. Разве этого не должно быть достаточно, чтобы СЕТЬ СЕТИ имела Чтение в корневой папке сайта? Я гуглил это некоторое время, и тут и там упоминается подражание, но суд присяжных все еще отсутствует. Некоторые сайты утверждают, что вы должны использовать олицетворение, и они предоставляют примеры того, как это сделать, но когда я пробую примеры, это все равно не работает. На других сайтах говорится, что олицетворение - это НЕ ПУТЬ, и вам НУЖНО предоставить разрешения для папок в этих случаях. Но это кажется странной вещью. Пользователи не имеют бизнеса на реальном сервере, они должны работать только через веб-сайт.
Есть предложения? Какой минимальный объем конфигурации необходим для работы? Любые советы о том, как устранить проблему такого рода и найти причину?