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

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

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

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

Ответ 1

Вам не нужны отдельные параметры -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 over на ServerFault предоставил решение здесь. Я повторил его шаги здесь:

  • Откройте диспетчер IIS
  • Щелкните имя сервера в дереве слева
  • Панель правой руки, раздел "Управление", дважды щелкните "Редактор конфигурации"
  • В верхней части выберите раздел system.webServer/security/authentication/anonymousAuthentication
  • Правая панель, нажмите "Разблокировать раздел"
  • В верхней части выберите раздел system.webServer/security/authentication/windowsAuthentication
  • Правая панель, нажмите "Разблокировать раздел"

Ответ 2

У меня возникла проблема с заблокированными разделами, и принятый ответ предлагает открыть графический интерфейс для его решения, чего я стараюсь избегать с помощью 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:

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

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

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

Ответ 3

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

    install-windowsfeature web-windows-auth