Включить проверку подлинности для приложения IIS в Powershell

Я знаю, как вы установили это для веб-сайта IIS, выполнив следующую команду:

Set-WebConfigurationProperty -filter "/system.webServer/security/authentication/windowsAuthentication" -name enabled -value true -PSPath "IIS:" -location $siteName

но я хочу, чтобы установить его для приложений внутри сайта. Например, у меня есть веб-сайт IIS с именем "MySite", и внутри него есть два приложения. Я хочу включить проверку подлинности Windows для одного, а не для другого. Поэтому включение на уровне сайта будет включено для обоих, и это то, что я не хочу.

3 ответов


вам не нужно отдельно -PSPath и -Location параметры. Вы можете объединить их следующим образом:

-PSPath "IIS:\Sites$SiteName$AppName"

поэтому команда будет выглядеть так:

Set-WebConfigurationProperty -Filter "/system.webServer/security/authentication/windowsAuthentication" -Name Enabled -Value True -PSPath "IIS:\Sites$SiteName$AppName"

обратите внимание, что вы можете столкнуться с такой ошибкой:

Set-WebConfigurationProperty: этот раздел конфигурации нельзя использовать по этому пути. Это происходит, когда секция заблокирована на родительском уровне. Блокировка либо по умолчанию (overrideModeDefault= "Deny"), либо устанавливается явно тег местоположения с overrideMode= "Deny"или устаревшим allowOverride="false".

Tomfanning на ServerFault предоставил решение здесь. Я повторил его шаги здесь:--5-->

  1. открыть Диспетчер IIS
  2. щелкните имя сервера в дереве слева
  3. правая панель, раздел управления, дважды щелкните редактор конфигурации
  4. вверху, выберите раздел система.webServer/безопасность/аутентификация / анонимная аутентификация
  5. правая панель, нажмите разблокировать раздел
  6. вверху выберите раздел Система.webServer/безопасность/аутентификация / windowsAuthentication
  7. правая панель, нажмите разблокировать раздел

у меня был вопрос о работе с заблокированными разделами, и принятый ответ предлагает открыть GUI для его решения, чего я пытаюсь избежать с PowerShell в первую очередь.

Короткий Ответ:

включить проверку подлинности Windows и отключить анонимную проверку подлинности

$iisAppName = "MyApp"

Write-Host Disable anonymous authentication
Set-WebConfigurationProperty -Filter "/system.webServer/security/authentication/anonymousAuthentication" -Name Enabled -Value False -PSPath IIS:\ -Location "Default Web Site/$iisAppName"

Write-Host Enable windows authentication
Set-WebConfigurationProperty -Filter "/system.webServer/security/authentication/windowsAuthentication" -Name Enabled -Value True -PSPath IIS:\ -Location "Default Web Site/$iisAppName"

работа с заблокированными разделы

как отмечено в документация IIS:

разделы проверки подлинности, как правило, заблокированы, т. е. их нельзя написать. к паутине.файл конфигурации, но должен быть записан в центральный файл applicationhost.вместо файла config.

мы должны использовать -PSPath и -Location параметры.

Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true -PSPath IIS:\ -location DemoSite/DemoApp

включение проверки подлинности Windows работает только в том случае, если она установлена.

    install-windowsfeature web-windows-auth