ASP.NET MVC 3 Intranet сайт на IIS7.5 w Windows Authentication выдает 401.3 и File authorization failed for the request when trying to log in

Я сделал сайт ASP.NET MVC 3 Intranet с включенной аутентификацией Windows:

  1. в свойствах файла проекта Visual Studio
  2. в web.config, т.е.
  3. в свойствах сайта на сервере IIS 7.5.

Анонимный доступ отключен для всех этих трех вышеперечисленных, в web.config написано . Имперсонация отключена в web.config по идентификатору и в свойствах сайта на сервере IIS 7.5. И, наконец, NETWORK SERVICE установлен для запуска пула приложений, а также имеет Read на папку сайта (не уверен, что это необходимо, скажите мне, но этого точно не достаточно для решения моей проблемы ниже).

Теперь при входе в систему через стандартное диалоговое окно аутентификации 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), пользователь может войти и увидеть сайт.

Почему так? Должна быть какая-то конфигурация, которую я упускаю. Разве не должно быть достаточно, чтобы NETWORK SERVICE имел Read на корневой папке сайта? Я погуглил об этом некоторое время, и имперсонализация упоминается то тут, то там, но, похоже, присяжные еще не определились. Некоторые сайты утверждают, что вам следует использовать имперсонацию, и приводят примеры того, как это сделать, но когда я пробую эти примеры, они все равно не работают. Другие сайты утверждают, что имперсонация - это НЕ выход, и что в таких случаях необходимо предоставить права на папку. Но это кажется таким странным. Пользователи не имеют дела с реальным сервером, они должны работать только через веб-сайт.

Есть предложения? Каков обычно минимальный объем конфигурации, необходимый для того, чтобы это работало? Любые советы о том, как устранить неполадки такого рода и добраться до первопричины?

9
задан Linus Proxy 21 February 2012 в 19:16
поделиться