Задача
При размещении веб-приложения Asp.Net Core 2.0 или 2.1 за IIS с аутентификацией Windows, установленной в true, и Анонимной аутентификацией, установленной в false, свойство User.Identity.Name
имеет значение null, а User.Identity.IsAuthenticated
- false.
Согласно документации здесь , аутентификация Windows должна работать только в Asp.Net Core 2.x при хостинге с IIS.
Фон
Я нахожусь в процессе миграции приложения Asp.Net 4.x MVC на Asp.Net Core, следуя инструкции Миграция из ASP.NET MVC в ASP.NET Core MVC .
Я тестирую сайт на сервере, на котором в данный момент размещаются приложения Asp.Net 4.x MVC, которые без проблем используют проверку подлинности Windows. Идентификационные данные пользователя Windows доступны, как и ожидалось.
После завершения руководства по миграции и исправления всех проблем со сборкой я создал профиль «Local IIS» в разделе «Debug» в свойствах веб-проекта, установив для параметра «Launch» значение «IIS». Я поставил галочку только «Включить аутентификацию Windows» и затем перешел на сайт. Несмотря на то, что вы вошли в систему с действительными учетными данными домена, User.Identity.Name
по-прежнему равен нулю.
Я установил .Net Core 2.1 SDK перед началом процесса миграции и ранее установил .Net Core 1.0.1 SDK Preview. Сервер работает под управлением Windows 2008 R2 с IIS 7.
Что я пробовал
Чтобы убедиться, что я не представил эту проблему во время процесса миграции, я создал новые веб-приложения ASP.NET Core, используя шаблон MVC и нацеленный на .NET Framework 4.7.2. Я настроил «Аутентификацию Windows» при выборе шаблона. После подтверждения того, что проверка подлинности Windows работает при использовании IIS Express, я настроил Local IIS, как указано выше. При просмотре в разделе IIS в правом верхнем углу панели навигации отображается «Hello,!». Я попробовал это с шаблонами из Asp.Net Core SDK 2.0 и 2.1.
Я следовал различным руководствам, и Stackoverflow отвечает на все вопросы, касающиеся настройки проверки подлинности Windows в самом приложении Asp.Net Core. Результатами были либо без изменений, либо постоянные запросы входа в систему, которые никогда не принимают действительные имя пользователя и пароль. Похоже, что эти решения могут быть написаны для более старых версий платформы или сценариев, где разработчик пытается объединить несколько методов аутентификации.