При разработке веб-приложения для внутреннего использования в доменной / корпоративной сети я столкнулся с проблемой.Я использовал приложение ASP.NET MVC 5 для запуска на экземпляре IIS 8 на Server 2012 R2.Я создал минимальный образец в нашем приложении, чтобы попытаться выяснить, почему проверка подлинности и олицетворение не работают должным образом.Проблема заключается в следующем: должен быть способ получить пользователя, который прошел аутентификацию из ASP.NET, используя любую из этих трех доступных идентификаций.На тестовом сервере (Windows 7 с IIS 7.5) все эти свойства указывают на DOMAIN \ USER, но на рабочем экземпляре вывод выглядит следующим образом (идентификатор AppPool).
HttpContext.User.Identity: NT AUTHORITY \ NETWORK SERVICE
System.Security.Principal.WindowsIdentity.GetCurrent (): NT AUTHORITY \ NETWORK SERVICE
Thread.CurrentPrincipal.Идентификация: NT AUTHORITY \ NETWORK SERVICE
В web.config все настройки выполняются следующим образом (как в Получение имени текущего пользователя Windows, возвращающего «IIS APPPOOL / Sitename» ):
И отключенная анонимная проверка подлинности
Режим отладки показывает, что режим проверки подлинности с использованием проверки подлинности Windows и тестирования с клиентами, не входящими в домен, на самом деле имеет место.При вводе учетных данных, которые не являются логинами домена или учетными записями пользователей локального сервера Windows, 401 неавторизованный возвращается успешноЭто означает, что аутентификация работает.Мой вопрос заключается в том, почему ни одно из перечисленных свойств в ASP.NET не установлено для удостоверения подлинности пользователя, выполняющего HTTP-запрос?Спасибо.