IIS - overrideModeDefault применяется в PowerShell, а не в пользовательском интерфейсе IIS

, я пытаюсь изменить установленное веб-приложение IIS и изменить методы аутентификации. Веб-сайт по умолчанию настроен на добавление анонимности и отключение всего остального. Когда я использую следующую строку в PowerShell:

Write-Host "Enabling Basic Authentication"
Set-WebConfigurationProperty -Filter /system.webServer/security/authentication/basicAuthentication -Name enabled -Value true -PSPath "IIS:\Sites\Default Web Site\$app_name"

, я получаю следующую ошибку, и ничего не меняется.

Enabling Basic Authentication
Set-WebConfigurationProperty : This configuration section cannot be used at this path. This happens when the section is locked at a parent level. 
Locking is either by default (overrideModeDefault="Deny"), or set explicitly by alocation tag with overrideMode="Deny" or the legacy allowOverride="false".
At E:\web_iis_applications\web_application\ps_Install_web_application.ps1:61 char:1
+ Set-WebConfigurationProperty -Filter /system.webServer/security/authe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Set-WebConfigurationProperty], FileLoadException
    + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.IIs.PowerShell.Provider.SetConfigurationPropertyCommand

Однако я могу войти прямо в пользовательский интерфейс и изменить эти записи, щелкнув правой кнопкой мыши, и все готово. Однако это не очень помогает, когда мне нужно выполнить 20 таких установок на 2 или 3 серверах. Я знаю, что мне не следует изменять настройку overridgeModeDefault для веб-сайта по умолчанию , поэтому я пытаюсь сделать это для каждой страницы на веб-сайте по умолчанию.

Я не разработчик этих приложений, поэтому не уверен, можно ли установить эти параметры в web.config или нет для каждого приложения.

2
задан 8 April 2016 в 18:15
1 ответ

Это снимает блокировку с разделов конфигурации access и ipSecurity :

$assembly = [System.Reflection.Assembly]::LoadFrom("$env:systemroot\system32\inetsrv\Microsoft.Web.Administration.dll")
$serverManager = new-object Microsoft.Web.Administration.ServerManager
$hostConfiguration = $serverManager.GetApplicationHostConfiguration()
$hostConfiguration.RootSectionGroup.SectionGroups["system.webServer"].SectionGroups['security'].Sections['access'].OverrideModeDefault = "Allow"
$hostConfiguration.RootSectionGroup.SectionGroups["system.webServer"].SectionGroups['security'].Sections['ipSecurity'].OverrideModeDefault = "Allow"
$serverManager.CommitChanges()

Теперь вы можете выполнять вызовы, как показано ниже :

Set-WebConfiguration -PSPath "IIS:\sites\Default Web Site" -Filter 'system.webserver/security/access' -Value 'Ssl,SslNegotiateCert,SslRequireCert'

Например, я хотел потребовать аутентификации сертификата клиента для определенных страниц, которые были открыты извне, но установить IP-фильтр на остальных «внутренних» страницах:

Set-WebConfiguration -PSPath "IIS:\sites\Default Web Site" -Filter 'system.webserver/security/access' -Value 'Ssl,SslNegotiateCert,SslRequireCert'
Set-WebConfiguration -PSPath "IIS:\sites\Default Web Site\InternalApi" -Filter 'system.webserver/security/access' -Value 'None'
Set-WebConfiguration -PSPath "IIS:\sites\Default Web Site\InternalApi" -Filter 'system.webserver/security/ipSecurity' -Value @{allowUnlisted="False"}
Add-WebConfigurationProperty -Filter 'system.webServer/security/ipSecurity' -PSPath "IIS:\sites\Default Web Site\InternalApi" -Name "." -Value @{ipAddress="172.16.1.0";allowed="true";subnetMask="16";}
0
ответ дан 25 March 2020 в 12:20

Теги

Похожие вопросы