Share via


Protection étendue Windows <extendedProtection>

Vue d’ensemble

L’élément <extendedProtection> spécifie les paramètres qui configurent la protection étendue pour l’authentification Windows dans IIS 7.5.

La protection étendue améliore les fonctionnalités d’authentification Windows existantes afin d’atténuer les attaques de relais d’authentification ou d’« intercepteur ». Cette atténuation est effectuée à l’aide d’informations de sécurité implémentées par le biais de deux mécanismes de sécurité :

  • Informations de liaison de canal spécifiées via un jeton de liaison de canal (CBT), qui est principalement utilisé pour les connexions SSL.
  • Informations de liaison de service spécifiées par le biais d’un nom de principal du service (SPN), qui est principalement utilisé pour les connexions qui n’utilisent pas SSL, ou lorsqu’une connexion est établie via un scénario qui fournit un déchargement SSL, tel qu’un serveur proxy ou un équilibreur de charge.

L’élément <extendedProtection> peut contenir une collection d’éléments <spn>, chacun contenant un SPN unique pour les informations de liaison de service. Chaque SPN représente un point de terminaison unique dans le chemin de connexion, qui peut être un nom de domaine complet (FQDN) ou un nom NetBIOS du serveur de destination ou d’un serveur proxy. Par exemple, si un client se connecte à un serveur de destination via un serveur proxy, la collection SPN sur le serveur de destination doit contenir le SPN du serveur proxy. Chaque SPN de la collection doit être précédé de « HTTP », de sorte que le SPN résultant pour « www.contoso.com » soit « HTTP/www.contoso.com ».

Il existe deux attributs de l’élément <extendedProtection> qui configurent la liaison de canal et un comportement supplémentaire pour la protection étendue IIS :

  • L’attribut tokenChecking configure le comportement de vérification des jetons de liaison de canal. Cet attribut peut posséder les valeurs suivantes :

    Nom Description
    None Cette valeur spécifie qu’IIS n’effectue pas de vérification de jeton de liaison de canal. Ce paramètre émule le comportement qui existait avant la protection étendue.

    La valeur numérique est 0.
    Allow Cette valeur spécifie que la vérification de jeton de liaison de canal est activée, mais pas obligatoire. Ce paramètre permet une communication sécurisée avec les clients qui prennent en charge la protection étendue, mais prend toujours en charge les clients qui ne sont pas capables d’utiliser la protection étendue.

    La valeur numérique est 1.
    Require Cette valeur spécifie que la vérification de jeton de liaison de canal est obligatoire. Ce paramètre ne prend pas en charge les clients qui ne prennent pas en charge la protection étendue.

    La valeur numérique est 2.
  • L’attribut flags configure un comportement supplémentaire pour la protection étendue. Les indicateurs possibles sont les suivants :

    Nom Description
    None Cet indicateur spécifie qu’aucun comportement supplémentaire n’est activé pour la protection étendue. (Par exemple, aucun serveur proxy n’est utilisé et la vérification SPN est activée et nécessite des noms de domaine complets.)

    La valeur numérique est 0.
    Proxy Cet indicateur spécifie qu’une partie du chemin de communication est via un proxy ou que le client se connecte directement au serveur de destination via HTTP.

    La valeur numérique est 1.
    NoServiceNameCheck Cet indicateur spécifie que la vérification SPN est désactivée. Cet indicateur ne doit pas être utilisé dans les scénarios où seuls les SPN sont vérifiés.

    La valeur numérique est 2.
    AllowDotlessSpn Cet indicateur spécifie que les SPN ne doivent pas obligatoirement être des noms de domaine complets. La définition de cet indicateur autorise les SPN basés sur NetBIOS. Remarque : la définition de cet indicateur n’est pas un scénario sécurisé ; les noms non basés sur le nom de domaine complet sont vulnérables aux attaques par empoisonnement de résolution de noms.

    La valeur numérique est 4.
    ProxyCohosting Cet indicateur spécifie que l’intégralité du chemin de communication client à serveur utilise uniquement HTTP ; aucune partie du chemin de communication n’utilise SSL et la vérification SPN sera utilisée. Remarque : lorsque vous spécifiez cet indicateur, vous devez également spécifier l’indicateur Proxy.

    La valeur numérique est 32.

Scénarios de protection étendue

Considérez les exemples de scénarios suivants :

  • Dans chacun des scénarios suivants, vous pouvez également spécifier l’indicateur AllowDotlessSpn si votre environnement réseau prend en charge les SPN basés sur NetBIOS. Toutefois, les SPN basés sur NetBIOS ne sont pas sécurisés.
  • Pour chacun des scénarios suivants où la vérification SPN sera utilisée et la vérification de jeton de liaison de canal ne sera pas utilisée, vous ne devez pas spécifier l’indicateur NoServiceNameCheck.
Scénario Indicateurs Description
Le client se connecte directement au serveur de destination à l’aide de HTTP Proxy, ProxyCohosting La vérification SPN sera utilisée et la vérification de jeton de liaison de canal ne sera pas utilisée.
Le client se connecte directement au serveur de destination à l’aide de SSL None La vérification de jeton de liaison de canal est utilisée et la vérification SPN n’est pas utilisée.
Le client se connecte au serveur de destination via un serveur proxy à l’aide de HTTP pour l’intégralité du chemin Proxy, ProxyCohosting La vérification SPN sera utilisée et la vérification de jeton de liaison de canal ne sera pas utilisée.
Le client se connecte au serveur de destination via un serveur proxy à l’aide de SSL pour l’intégralité du chemin Proxy La vérification SPN sera utilisée et la vérification de jeton de liaison de canal ne sera pas utilisée.
Le client se connecte au serveur proxy à l’aide de SSL et le serveur proxy se connecte au serveur de destination à l’aide de HTTP (déchargement SSL) Proxy La vérification SPN sera utilisée et la vérification de jeton de liaison de canal ne sera pas utilisée.

Informations supplémentaires

Pour plus d’informations sur la protection étendue, consultez la rubrique suivante :

Integrated Windows Authentication with Extended Protection (en anglais)

Noms des principaux du service

Compatibilité

Version Notes
IIS 10.0 L’élément <extendedProtection> n’a pas été modifié dans IIS 10.0.
IIS 8.5 L’élément <extendedProtection> n’a pas été modifié dans IIS 8.5.
IIS 8.0 L’élément <extendedProtection> n’a pas été modifié dans IIS 8.0.
IIS 7.5 L’élément <extendedProtection> a été introduit dans IIS 7.5.
IIS 7.0 S/O
IIS 6.0 S/O

Programme d’installation

L’installation par défaut d’IIS 7 et versions ultérieures n’inclut pas le service de rôle d’authentification Windows. Pour utiliser l’authentification Windows sur IIS, vous devez installer le service de rôle, désactiver Authentification anonyme pour votre site web ou votre application, puis activer Authentification Windows pour le site ou l’application.

Remarque

Après avoir installé le service de rôle, IIS 7 valide les paramètres de configuration suivants dans le fichier ApplicationHost.config.

<windowsAuthentication enabled="false" />

Windows Server 2012 ou Windows Server 2012 R2

  1. Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
  2. Dans Gestionnaire de serveur, cliquez sur le menu Gérer, puis sur Ajouter des rôles et des fonctionnalités.
  3. Dans l’Assistant Ajout de rôles et de fonctionnalités, cliquez sur Suivant. Sélectionnez le type d’installation, puis cliquez sur Suivant. Sélectionnez le serveur de destination, puis cliquez sur Suivant.
  4. Dans la page Rôles serveur, développez Serveur web (IIS), Serveur web, Sécurité, puis sélectionnez Authentification Windows. Sélectionnez Suivant.
    Screenshot of the Server Roles page. The Windows Authentication option is selected and highlighted. .
  5. Dans la page Sélectionner les composants, cliquez sur Suivant.
  6. Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
  7. Dans la page Résultats , cliquez sur Fermer.

Windows 8 ou Windows 8.1

  1. Dans l’écran Démarrer, déplacez le pointeur jusqu’au coin inférieur gauche, cliquez avec le bouton droit sur le bouton Démarrer, puis cliquez sur Panneau de configuration.
  2. Dans Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
  3. Développez Internet Information Services, Services World Wide Web, Sécurité, puis sélectionnez Authentification Windows.
    Screenshot of the Programs and Features navigation tree. The Windows Authentication option is selected and highlighted.
  4. Cliquez sur OK.
  5. Cliquez sur Fermer.

Windows Server 2008 ou Windows Server 2008 R2

  1. Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire de serveur.
  2. Dans le volet de hiérarchie du Gestionnaire de serveur, développez Rôles, puis cliquez sur Serveur web (IIS).
  3. Dans le volet Serveur web (IIS), faites défiler jusqu’à la section Services de rôle, puis cliquez sur Ajouter des services de rôle.
  4. Dans la page Sélectionner des services de rôle de l’Assistant Ajout de services de rôle, sélectionnez Authentification Windows, puis cliquez sur Suivant.
    Screenshot of the Select Role Services page. The Security option is expanded. The Windows Authentication option is selected and highlighted.
  5. Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
  6. Dans la page Résultats , cliquez sur Fermer.

Windows Vista ou Windows 7

  1. Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
  2. Dans Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
  3. Développez Internet Information Services, Services World Wide Web, puis Sécurité.
  4. Sélectionnez Authentification Windows, puis cliquez sur OK.
    Screenshot of the Programs and Features navigation tree. Windows Authentication is highlighted and selected. The Security folder is expanded.

Procédure

Comment activer la protection étendue pour l’authentification Windows

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, développez le nom du serveur, développez Sites, puis le site, l’application ou le service web pour lequel vous souhaitez activer la protection étendue pour l’authentification Windows.

  3. Faites défiler jusqu’à la section Sécurité dans le volet Accueil, puis double-cliquez sur Authentification.

  4. Dans le volet Authentification, sélectionnez Authentification Windows.

  5. Cliquez sur Activer dans le volet Actions.
    Screenshot of the Authentication page. Windows Authentication is highlighted. The Enable button is found in the Actions pane.

  6. Cliquez sur Paramètres avancés dans le volet Actions.

  7. Quand la boîte de dialogue Paramètres avancés s’affiche, sélectionnez l’une des options suivantes dans le menu déroulant Protection étendue :

    • Sélectionnez Accepter si vous souhaitez activer la protection étendue tout en fournissant une prise en charge de bas niveau pour les clients qui ne prennent pas en charge la protection étendue.
    • Sélectionnez Obligatoire si vous souhaitez activer la protection étendue sans fournir de prise en charge de bas niveau.
      Screenshot of the Advanced Settings dialog box. In the Extended Protection drop down menu, the Accept option is highlighted.
  8. Cliquez sur OK pour fermer la boîte de dialogue Paramètres avancés.

Configuration

L’élément <extendedProtection> est configurable au niveau du site, de l’application ou du répertoire virtuel dans le fichier ApplicationHost.config.

Attributs

Attribut Description
flags Attribut flags facultatif.

Spécifie les paramètres de comportement supplémentaires pour la protection étendue.

L’attribut flags peut être une combinaison des valeurs suivantes ; la valeur par défaut est None.
Nom Description
None

Cet indicateur spécifie qu’aucun comportement supplémentaire n’est activé pour la protection étendue. (Par exemple, aucun serveur proxy n’est utilisé et la vérification SPN est activée et nécessite des noms de domaine complets.)

La valeur numérique est 0.

Proxy

Cet indicateur spécifie qu’une partie du chemin de communication est via un proxy ou que le client se connecte directement au serveur de destination via HTTP.

La valeur numérique est 1.

NoServiceNameCheck

Cet indicateur spécifie que la vérification SPN est désactivée. Cet indicateur ne doit pas être utilisé dans les scénarios où seuls les SPN sont vérifiés.

La valeur numérique est 2.

AllowDotlessSpn

Cet indicateur spécifie que les SPN ne doivent pas obligatoirement être des noms de domaine complets. La définition de cet indicateur autorise les SPN basés sur NetBIOS. Remarque : la définition de cet indicateur n’est pas un scénario sécurisé ; les noms non basés sur le nom de domaine complet sont vulnérables aux attaques par empoisonnement de résolution de noms.

La valeur numérique est 4.

ProxyCohosting

Cet indicateur spécifie que l’intégralité du chemin de communication client à serveur utilise uniquement HTTP ; aucune partie du chemin de communication n’utilise SSL et la vérification SPN sera utilisée. Remarque : lorsque vous spécifiez cet indicateur, vous devez également spécifier l’indicateur Proxy.

La valeur numérique est 32.

tokenChecking Attribut enum facultatif.

Spécifie le comportement de vérification des informations de liaison de canal.

L’attribut tokenChecking peut être l’une des valeurs suivantes ; la valeur par défaut est None.
Nom Description
None

Cette valeur spécifie qu’IIS n’effectue pas de vérification de jeton de liaison de canal. Ce paramètre émule le comportement qui existait avant la protection étendue.

La valeur numérique est 0.

Allow

Cette valeur spécifie que la vérification de jeton de liaison de canal est activée, mais pas obligatoire. Ce paramètre permet une communication sécurisée avec les clients qui prennent en charge la protection étendue, mais prend toujours en charge les clients qui ne sont pas capables d’utiliser la protection étendue.

La valeur numérique est 1.

Require

Cette valeur spécifie que la vérification de jeton de liaison de canal est obligatoire. Ce paramètre ne prend pas en charge les clients qui ne prennent pas en charge la protection étendue.

La valeur numérique est 2.

Éléments enfants

Élément Description
spn Ajoute un SPN à la collection.
clearSpns Efface la collection de SPN.
removeSpn Supprime un SPN de la collection.

Exemple Configuration

L’exemple suivant affiche un élément <extendedProtection> qui illustre l’activation de l’authentification Windows avec une protection étendue pour le site web par défaut et ajoute deux entrées SPN à la collection de SPN.

<location path="Default Web Site">
   <system.webServer>
      <security>
         <authentication>
            <windowsAuthentication enabled="true">
               <extendedProtection tokenChecking="Allow" flags="None">
                  <spn name="HTTP/www.contoso.com" />
                  <spn name="HTTP/contoso.com" />
               </extendedProtection>
            </windowsAuthentication>
         </authentication>
      </security>
   </system.webServer>
</location>

Exemple de code

Les exemples suivants illustrent la configuration de l’authentification Windows avec une protection étendue pour le site web par défaut et ajoutent deux entrées SPN à la collection de SPN.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /extendedProtection.tokenChecking:"Allow" /extendedProtection.flags:"None" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/www.contoso.com']" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/contoso.com']" /commit:apphost

Remarque

Vous devez veiller à définir le paramètre commit sur apphost quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d’emplacement appropriée dans le fichier ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site");
         windowsAuthenticationSection["enabled"] = true;

         ConfigurationElement extendedProtectionElement = windowsAuthenticationSection.GetChildElement("extendedProtection");
         extendedProtectionElement["tokenChecking"] = @"Allow";
         extendedProtectionElement["flags"] = @"None";

         ConfigurationElementCollection extendedProtectionCollection = extendedProtectionElement.GetCollection();

         ConfigurationElement spnElement = extendedProtectionCollection.CreateElement("spn");
         spnElement["name"] = @"HTTP/www.contoso.com";
         extendedProtectionCollection.Add(spnElement);

         ConfigurationElement spnElement1 = extendedProtectionCollection.CreateElement("spn");
         spnElement1["name"] = @"HTTP/contoso.com";
         extendedProtectionCollection.Add(spnElement1);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site")
      windowsAuthenticationSection("enabled") = True

      Dim extendedProtectionElement As ConfigurationElement = windowsAuthenticationSection.GetChildElement("extendedProtection")
      extendedProtectionElement("tokenChecking") = "Allow"
      extendedProtectionElement("flags") = "None"

      Dim extendedProtectionCollection As ConfigurationElementCollection = extendedProtectionElement.GetCollection

      Dim spnElement As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement("name") = "HTTP/www.contoso.com"
      extendedProtectionCollection.Add(spnElement)

      Dim spnElement1 As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement1("name") = "HTTP/contoso.com"
      extendedProtectionCollection.Add(spnElement1)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site");
windowsAuthenticationSection.Properties.Item("enabled").Value = true;

var extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection");
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow";
extendedProtectionElement.Properties.Item("flags").Value = "None";

var extendedProtectionCollection = extendedProtectionElement.Collection;

var spnElement = extendedProtectionCollection.CreateNewElement("spn");
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com";
extendedProtectionCollection.AddElement(spnElement);

var spnElement1 = extendedProtectionCollection.CreateNewElement("spn");
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com";
extendedProtectionCollection.AddElement(spnElement1);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site")
windowsAuthenticationSection.Properties.Item("enabled").Value = True

Set extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection")
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow"
extendedProtectionElement.Properties.Item("flags").Value = "None"

Set extendedProtectionCollection = extendedProtectionElement.Collection

Set spnElement = extendedProtectionCollection.CreateNewElement("spn")
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com"
extendedProtectionCollection.AddElement(spnElement)

Set spnElement1 = extendedProtectionCollection.CreateNewElement("spn")
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com"
extendedProtectionCollection.AddElement(spnElement1)

adminManager.CommitChanges()