#asp.net-core #iis #web-config #windows-authentication
Вопрос:
Каркас asp.net ядро 2.2 — После разработки и удалось получить пользователя Windows, вошедшего в систему на локальном хосте (IIS express):
[Route("getUser")]
[HttpGet]
public IActionResult GetUser()
{
var NullUser = User.Identity.Name; //return null
var currentUser = System.Security.Principal.WindowsIdentity.GetCurrent();
return Ok(currentUser.Name);
}
и запуски. json:
"iisSettings":{
"windowsAuthentication": false,
"anonymousAuthentication": true
...
}
Пока все идет так хорошо !
Теперь — я публикую приложение в IIS с помощью web.config:
<system.web>
<authentication mode="Windows"></authentication>
<identity impersonate="false" /> //This is because I'm getting the username by code
</system.web>
<system.webServer>
<aspnetCore processPath=....... forwardWindowsAuthToken="true" hsotingModel="InProcess">
</aspnetCore>
<security>
<authentication>
<anonymousAuthentication enabled ="false" />
<windowsAuthentication enabled ="true" />
</authentication>
</security>
</system.webServer>
Это основные свойства пула приложений, с которыми работает приложение:
Версия .NET CLR: Нет управляемого кода
Режим управляемого пиллинирования: Интегрирован
Дополнительно: Модель процесса: Удостоверение: Пулидентичность приложения
И затем, при запуске приложения, я получаю ошибку 500.19, указывающую на раздел аутентификации (игнорируйте ошибки опечатки — это написание свободного текста — не копировать вставить):
AnonymousAuthenticationModule
Config error
This configuration section cannot be used at this path. This happens when the section is
locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set
explicitly by a location tag with overrideMode="Deny"; ot the legacy allowOverride="false"/
Config Source:
<authentication>
<anonymousAuthentication enabled ="true" />
<windowsAuthentication enabled ="true" />
Комментарии:
1. Удалите все
<system.web>
. Они предназначены для ASP.NET, не ASP.NET Ядро. Используйте диспетчер IIS, чтобы отключить анонимную проверку подлинности и включить проверку подлинности Windows для вашего сайта/приложения, не добавляя<authentication>
в свойweb.config
. Диспетчер IIS знает правильное место для размещения настроек.2. @Лекс Ли — Отлично , я попробую. Почему я не вижу «проверку подлинности Windows» при проверке подлинности в IIS ?
3. Вероятно, вы не включили проверку подлинности Windows во время установки IIS. Вы можете включить его прямо сейчас.
4. Управлял — Установил его
5. Включение проверки подлинности Windows в IIS: Перейдите в Панель управления -> Программы и компоненты ->> Включите или выключите функции Windows->>> Разверните Информационные службы Интернета ->>>> Службы Всемирной паутины ->>>>> В разделе Безопасность установите флажок Проверка подлинности Windows ->>>>>> Нажмите ОК, чтобы завершить настройку.
Ответ №1:
Я почти уверен, что «Анонимная аутентификация включена» должна быть установлена в значение false.
Комментарии:
1. Пожалуйста, укажите дополнительную информацию в своем ответе. Как это написано в настоящее время, трудно понять ваше решение.
Ответ №2:
Как упоминал @Lex Li — проблема заключалась в элементах конфигурации, которые не имеют отношения к ASP.NET ядро, но для ASP.NET 4.5 — Я удалил их, как он советовал