web-dev-qa-db-fra.com

Activer l'authentification pour IIS application dans Powershell

Je sais comment vous définissez cela pour le site Web IIS en lançant la commande suivante:

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

Mais je veux le configurer pour les applications à l'intérieur de ce site. Par exemple, le site Web IIS s'appelle "MySite" et contient deux applications. Je souhaite activer l'authentification Windows pour l'un et non pour l'autre. Donc, l'activation au niveau du site sera activée pour les deux et c'est ce que je ne veux pas.

15
Jay Nanavaty

Vous n'avez pas besoin de paramètres -PSPath et -Location séparés. Vous pouvez les combiner comme ceci:

-PSPath "IIS:\Sites\$SiteName\$AppName"

Donc, la commande réelle ressemblera à ceci:

Set-WebConfigurationProperty -Filter "/system.webServer/security/authentication/windowsAuthentication" -Name Enabled -Value True -PSPath "IIS:\Sites\$SiteName\$AppName"

Notez que vous pouvez rencontrer cette erreur:

Set-WebConfigurationProperty: cette section de configuration ne peut pas être utilisée sur ce chemin. Cela se produit lorsque la section est verrouillée au niveau parent. Le verrouillage est soit par défaut (overrideModeDefault = "Deny"), soit défini explicitement par une balise d'emplacement avec overrideMode = "Deny" ou par le legs allowOverride = "false".

Tomfanning sur ServerFault a fourni la solution ici . J'ai répété ses pas ici:

  1. Ouvrir le gestionnaire IIS
  2. Cliquez sur le nom du serveur dans l'arborescence à gauche
  3. Volet de droite, section Gestion, double-cliquez sur l'éditeur de configuration
  4. En haut, choisissez la section system.webServer/security/authentication/anonymousAuthentication
  5. Dans le volet de droite, cliquez sur Déverrouiller la section.
  6. En haut, choisissez la section system.webServer/security/authentication/windowsAuthentication
  7. Dans le volet de droite, cliquez sur Déverrouiller la section.
18
JamesQMurphy

J'avais le problème de traiter les sections verrouillées et la réponse acceptée propose d'ouvrir une interface graphique pour la résoudre, ce que j'essaie d'éviter avec PowerShell en premier lieu.

Réponse courte

Activer l'authentification Windows et désactiver l'authentification anonyme

$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"

Traiter avec les sections verrouillées

Comme indiqué dans la IIS documentation :

Les sections d’authentification sont généralement verrouillées, c’est-à-dire qu’elles ne peuvent pas être écrites dans un fichier web.config mais doit être écrit dans le fichier central fichier applicationhost.config à la place.

Nous devons utiliser les paramètres -PSPath et -Location.

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

L'activation de l'authentification Windows ne fonctionne que si elle est installée. 

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