У меня приложение ASP.NET MVC 3, работающее как на моем локальном компьютере разработчика (Win7), так и на промежуточном сервере (W2k8r2).Приложение работает в обеих средах до тех пор, пока не будет включена безопасность авторизации ASP.NET для Windows.
После защиты веб-приложения оно продолжает работать корректно на промежуточном сервере, но генерирует 401.2 отказа в доступе на моем локальном устройстве разработчика.Единственное существенное различие, которое я вижу, это локальное устройство разработки, я использую Cassini через Visual Studio, тогда как сервер - IIS7.5.
Используется авторизация Windows + олицетворение.Что может привести к тому, что Cassini сгенерирует отказ в доступе 401.2?
Web.config:
<system.web>
<authentication mode="Windows" />
<identity impersonate="true" />
<!-- replication of system.webServer security settings for cassini which doesn't process them... -->
<authorization>
<allow roles=".\Test Application - Users" />
<deny users="*" />
</authorization>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" users="" roles="Test Application - Users" />
</authorization>
</security>
FYI Соответствующие пользователи находятся в Windows «Тестовое приложение - Пользователи»группа безопасности в каждой системе.
Решение
Основная проблема в коробке разработчика оказалась такой:
- Кассини не делает• не поддерживает олицетворение идентичности и
- Хотя пользователь добавил в соответствующие группы NT, он не вышел из системы и не включил ее и, таким образом, идентификаторы SID группы, связанные с их Windowsтокен не был обновлен
Если бы Кассини поддерживал олицетворение, я сомневаюсь, что это было бы проблемой, потому что новый токен был бы установлен в контексте олицетворения.Спасибо @ x0n за указание в правильном направлении.