Включить проверку подлинности для приложения 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"), либо задается явно тегом location с overrideMode= "Deny" или наследие allowOverride= "false".
Tomfanning over at ServerFault предоставил решениездесь . Я повторил его шаги здесь:
- Откройте Диспетчер IIS
- щелкните имя сервера в дереве слева
- правая панель, раздел управления, дважды щелкните редактор конфигурации
- в верхней части Выберите раздел Система.вебсервер/безопасности/аутентификация/anonymousAuthentication
- правая панель, нажмите кнопку Разблокировать Раздел
- в верхней части Выберите раздел Система.вебсервер/безопасности/аутентификация/включена
- правая панель, нажмите разблокировать раздел
У меня была проблема работы с заблокированными секциями, и принятый ответ предлагает открыть графический интерфейс, чтобы решить ее, чего я стараюсь избегать с помощью 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.вместо этого-конфигурационный файл.
Мы должны использовать параметры
-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
Comments