Включить проверку подлинности для приложения 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-->
- открыть Диспетчер IIS
- щелкните имя сервера в дереве слева
- правая панель, раздел управления, дважды щелкните редактор конфигурации
- вверху, выберите раздел система.webServer/безопасность/аутентификация / анонимная аутентификация
- правая панель, нажмите разблокировать раздел
- вверху выберите раздел Система.webServer/безопасность/аутентификация / windowsAuthentication
- правая панель, нажмите разблокировать раздел
у меня был вопрос о работе с заблокированными разделами, и принятый ответ предлагает открыть 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