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



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



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


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

686   3  

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 предоставил решениездесь . Я повторил его шаги здесь:

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

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

    Ничего не найдено.