web-dev-qa-db-ja.com

PowershellでIISアプリの認証を有効にする

次のコマンドでIIS Webサイトにこれを設定する方法を知っています。

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

しかし、私はそのウェブサイト内のアプリケーションにそれを設定したいと思います。たとえば、IISという名前の「MySite」というWebサイトがあり、その中に2つのアプリケーションがあります。一方に対してはWindows認証を有効にし、他方に対してはWindows認証を有効にしたいです。両方で有効になっていて、それは私が望んでいないことです。

21
Jay Nanavaty

個別の-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"を使用してロケーションタグによって明示的に設定されます。

ServerFaultのTomfanningがソリューションを提供しました here 。ここで彼の手順を繰り返しました。

  1. Open IIS Manager
  2. 左側のツリーでサーバー名をクリックします
  3. 右側のペイン、管理セクション、構成エディターをダブルクリック
  4. 上部で、セクションsystem.webServer/security/authentication/anonymousAuthenticationを選択します
  5. 右側のペインで、セクションのロック解除をクリックします
  6. 上部で、セクションsystem.webServer/security/authentication/windowsAuthenticationを選択します
  7. 右側のペインで、セクションのロック解除をクリックします
23
JamesQMurphy

ロックされたセクションを処理する問題があり、受け入れられた答えは、それを解決するために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ドキュメント に記載されているとおり:

認証セクションは通常ロックされています。つまり、web.configファイルに書き込むことはできませんが、代わりに中央のapplicationhost.configファイルに書き込む必要があります。

-PSPathおよび-Locationパラメーターを使用する必要があります。

Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true -PSPath IIS:\ -location DemoSite/DemoApp
34
Rick Glos

Windows認証の有効化は、インストールされている場合にのみ機能します。

    install-windowsfeature web-windows-auth    
0
Mr. T