Включить проверку подлинности приложения 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