Partager via


Autorisation de gestion <authorization>

Vue d’ensemble

L’élément <authorization> de l’élément <management> spécifie les paramètres d’autorisation pour la gestion à distance du serveur web quand le fournisseur d’autorisation par défaut, ConfigurationAuthorizationProvider, est activé dans Internet Information Services (IIS) 7.

Remarque

ConfigurationAuthorizationProvider utilise le fichier IIS Administration.config pour stocker les paramètres d’autorisation du Gestionnaire IIS pour le Gestionnaire IIS. Toutefois, d’autres fournisseurs d’autorisation peuvent utiliser d’autres emplacements de stockage.

Compatibilité

Version Notes
IIS 10.0 L’élément <authorization> n’a pas été modifié dans IIS 10.0.
IIS 8.5 L’élément <authorization> n’a pas été modifié dans IIS 8.5.
IIS 8.0 L’élément <authorization> n’a pas été modifié dans IIS 8.0.
IIS 7.5 L’élément <authorization> n’a pas été modifié dans IIS 7.5.
IIS 7.0 L’élément <authorization> de l’élément <management> a été introduit dans IIS 7.0.
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 Service de gestion. Pour installer ce service de rôle, procédez comme suit.

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), Outils de gestion, puis sélectionnez Service de gestion. Sélectionnez Suivant.
    Screenshot that shows Management Service with a selected checkbox. .
  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’accueil, 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 le 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, Outils de gestion web, puis sélectionnez Service de gestion IIS.
    Screenshot that shows I I S Management Service with a selected checkbox, under the Web Management Tools node.
  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 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 Service de gestion, puis cliquez sur Suivant.
    Screenshot that shows Management Service with a selected checkbox, under the Management Tools node.
  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 le 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, puis Outil de gestion web.
  4. Sélectionnez Service de gestion IIS, puis cliquez sur OK.
    Screenshot that shows Enable remote connections with a selected checkbox.

Procédure

Comment autoriser un utilisateur du Gestionnaire IIS pour un site ou une application

  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, accédez à la connexion, au site, à l’application ou au répertoire pour lequel vous souhaitez autoriser un utilisateur du Gestionnaire IIS.

  3. Dans le volet Accueil, double-cliquez sur Autorisations du Gestionnaire IIS.
    Screenshot that shows I I S Manager Permissions selected in the Home pane.

  4. Dans la page Autorisations du Gestionnaire IIS, cliquez sur Autoriser l’utilisateur... dans le volet Actions.
    Screenshot that shows the Actions Pane. Nothing is listed under No Grouping.

  5. Dans la boîte de dialogue Autoriser l’utilisateur, choisissez Gestionnaire IIS, puis cliquez sur Sélectionner...
    Screenshot that shows the Allow User dialog box. I I S Manager is selected.

  6. Dans la boîte de dialogue Utilisateurs, mettez en surbrillance le compte d’utilisateur que vous souhaitez autoriser, puis cliquez sur OK.
    Screenshot that shows the Users dialog box. Contoso User is listed under Name.

  7. Dans la boîte de dialogue Autoriser l’utilisateur, cliquez sur OK.
    Screenshot that shows the Allow User dialog box. I I S Manager is selected and Contoso User is listed in the field.

Configuration

Attributs

Attribut Description
defaultProvider Attribut de chaîne facultatif.

Spécifie le fournisseur par défaut qui autorise les utilisateurs du Gestionnaire IIS et les utilisateurs Windows qui se connectent à distance au serveur web à l’aide du Gestionnaire IIS.

Si vous modifiez le fournisseur par défaut, vous devez redémarrer le service de gestion (WMSVC) pour que les modifications prennent effet. Si vous avez ouvert le Gestionnaire IIS, vous devez également rouvrir le Gestionnaire IIS.

Éléments enfants

Élément Description
authorizationRules Élément facultatif.

Configure les utilisateurs du Gestionnaire IIS et les utilisateurs Windows autorisés à se connecter à un site ou à une application à l’aide du Gestionnaire IIS.
providers Élément facultatif.

Configure les fournisseurs d’autorisation qui autorisent les utilisateurs du Gestionnaire IIS et Windows qui se connectent à distance aux sites et aux applications à l’aide du Gestionnaire IIS.

Exemple Configuration

L’exemple de configuration suivant montre comment autoriser un utilisateur du Gestionnaire IIS nommé Contoso, un groupe Windows nommé Groupe de tests et un utilisateur Windows nommé Contoso2 à se connecter au site web par défaut à l’aide du Gestionnaire IIS.

<authorizationRules>
   <scope path="/Default Web Site">
      <add name="Contoso" />
      <add name="COMPUTER01\Test Group" isRole="true" />
      <add name="COMPUTER01\Contoso2" />
   </scope>
</authorizationRules>

L’élément par défaut <providers> suivant sous l’élément <authorization> est configuré dans le fichier Administration.config racine dans IIS 7 lorsque le service de rôle Service de gestion est installé.

<authorization defaultProvider="ConfigurationAuthorizationProvider">
   <providers>
      <add name="ConfigurationAuthorizationProvider"
         type="Microsoft.Web.Management.Server.ConfigurationAuthorizationProvider, Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
   </providers>
</authorization>

Exemple de code

Les exemples de code suivants vérifient si un élément <scope> a déjà été ajouté à l’élément <authorizationRules> pour le site web par défaut ; sinon, un élément <scope> est ajouté à l’élément <authorizationRules>. Ensuite, un élément <add> est ajouté à l’élément <scope> qui autorise un compte d’utilisateur nommé ContosoUser.

AppCmd.exe

Remarque

Vous ne pouvez pas configurer les paramètres <system.webServer/management/authorization> à l’aide d’AppCmd.exe.

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.GetAdministrationConfiguration();
         ConfigurationSection authorizationSection = config.GetSection("system.webServer/management/authorization");
         ConfigurationElementCollection authorizationRulesCollection = authorizationSection.GetCollection("authorizationRules");

         ConfigurationElement scopeElement = FindElement(authorizationRulesCollection, "scope", "path", @"/Default Web Site");
         if (scopeElement == null)
         {
            scopeElement = authorizationRulesCollection.CreateElement("scope");
            scopeElement["path"] = @"/Default Web Site";
            authorizationRulesCollection.Add(scopeElement);
         }

         ConfigurationElementCollection scopeCollection = scopeElement.GetCollection();
         ConfigurationElement addElement = scopeCollection.CreateElement("add");
         addElement["name"] = @"ContosoUser";
         scopeCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }

   private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
   {
      foreach (ConfigurationElement element in collection)
      {
         if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
         {
            bool matches = true;
            for (int i = 0; i < keyValues.Length; i += 2)
            {
               object o = element.GetAttributeValue(keyValues[i]);
               string value = null;
               if (o != null)
               {
                  value = o.ToString();
               }
               if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
               {
                  matches = false;
                  break;
               }
            }
            if (matches)
            {
               return element;
            }
         }
      }
      return null;
   }
}

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.GetAdministrationConfiguration
      Dim authorizationSection As ConfigurationSection = config.GetSection("system.webServer/management/authorization")
      Dim authorizationRulesCollection As ConfigurationElementCollection = authorizationSection.GetCollection("authorizationRules")

      Dim scopeElement As ConfigurationElement = FindElement(authorizationRulesCollection, "scope", "path", "/Default Web Site")
      If (scopeElement Is Nothing) Then
         scopeElement = authorizationRulesCollection.CreateElement("scope")
         scopeElement("path") = "/Default Web Site"
         authorizationRulesCollection.Add(scopeElement)
      End If

      Dim scopeCollection As ConfigurationElementCollection = scopeElement.GetCollection
      Dim addElement As ConfigurationElement = scopeCollection.CreateElement("add")
      addElement("name") = "ContosoUser"
      scopeCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub

   Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
      For Each element As ConfigurationElement In collection
         If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
            Dim matches As Boolean = True
            Dim i As Integer
            For i = 0 To keyValues.Length - 1 Step 2
               Dim o As Object = element.GetAttributeValue(keyValues(i))
               Dim value As String = Nothing
               If (Not (o) Is Nothing) Then
                  value = o.ToString
               End If
               If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
                  matches = False
                  Exit For
               End If
            Next
            If matches Then
               Return element
            End If
         End If
      Next
      Return Nothing
   End Function


End Module

JavaScript

var adminManager = new ActiveXObject("Microsoft.ApplicationHost.WritableAdminManager"); 
adminManager.CommitPath = "MACHINE/WEBROOT"; 
adminManager.SetMetadata("pathMapper", "AdministrationConfig");

var authorizationSection = adminManager.GetAdminSection("system.webServer/management/authorization", "MACHINE/WEBROOT"); 
var authorizationRulesCollection = authorizationSection.ChildElements.Item("authorizationRules").Collection;

var scopeElementPos = FindElement(authorizationRulesCollection, "scope", ["path", "/Default Web Site"]);
if (scopeElementPos == -1)
{
   var scopeElement = authorizationRulesCollection.CreateNewElement("scope");
   scopeElement.Properties.Item("path").Value = "/Default Web Site";
   authorizationRulesCollection.AddElement(scopeElement);
}
else
{
   var scopeElement = authorizationRulesCollection.Item(scopeElementPos);
}

var scopeCollection = scopeElement.Collection;
var addElement = scopeCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "ContosoUser";
scopeCollection.AddElement(addElement);

adminManager.CommitChanges();

function FindElement(collection, elementTagName, valuesToMatch) {
   for (var i = 0; i < collection.Count; i++) {
      var element = collection.Item(i);
      if (element.Name == elementTagName) {
         var matches = true;
         for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
            var property = element.GetPropertyByName(valuesToMatch[iVal]);
            var value = property.Value;
            if (value != null) {
               value = value.toString();
            }
            if (value != valuesToMatch[iVal + 1]) {
               matches = false;
               break;
            }
         }
         if (matches) {
            return i;
         }
      }
   }
   return -1;
}

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT"
adminManager.SetMetadata "pathMapper", "AdministrationConfig"

Set authorizationSection = adminManager.GetAdminSection("system.webServer/management/authorization", "MACHINE/WEBROOT")
Set authorizationRulesCollection = authorizationSection.ChildElements.Item("authorizationRules").Collection

scopeElementPos = FindElement(authorizationRulesCollection, "scope", Array("path", "/Default Web Site"))
If scopeElementPos = -1 Then
   Set scopeElement = authorizationRulesCollection.CreateNewElement("scope")
   scopeElement.Properties.Item("path").Value = "/Default Web Site"
   authorizationRulesCollection.AddElement(scopeElement)
Else
   Set scopeElement = authorizationRulesCollection.Item(scopeElementPos)
End If

Set scopeCollection = scopeElement.Collection
Set addElement = scopeCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "ContosoUser"
scopeCollection.AddElement(addElement)

adminManager.CommitChanges()

Function FindElement(collection, elementTagName, valuesToMatch)
   For i = 0 To CInt(collection.Count) - 1
      Set element = collection.Item(i)
      If element.Name = elementTagName Then
         matches = True
         For iVal = 0 To UBound(valuesToMatch) Step 2
            Set property = element.GetPropertyByName(valuesToMatch(iVal))
            value = property.Value
            If Not IsNull(value) Then
               value = CStr(value)
            End If
            If Not value = CStr(valuesToMatch(iVal + 1)) Then
               matches = False
               Exit For
            End If
         Next
         If matches Then
            Exit For
         End If
      End If
   Next
   If matches Then
      FindElement = i
   Else
      FindElement = -1
   End If
End Function

Remarque

Les exemples dans ce document illustrent l’utilisation d’un assembly de code managé qui a été stocké dans le Global Assembly Cache (GAC) .NET. Avant d’utiliser le code dans ces exemples pour déployer vos propres assemblys, vous devez récupérer les informations d’assembly à partir du GAC. Pour cela, utilisez les étapes suivantes :

  • Dans l’Explorateur Windows, ouvrez votre chemin C:\Windows\assembly, où C: est votre lecteur de système d’exploitation.
  • Recherchez votre assembly.
  • Cliquez avec le bouton droit sur l’assembly et cliquez sur Propriétés.
  • Copiez la valeur Culture, par exemple Neutre.
  • Copiez le numéro de version, par exemple 1.0.0.0.
  • Copiez la valeur du jeton de clé publique, par exemple 426f62526f636b73.
  • Cliquez sur Annuler.

Les exemples de code suivants ajoutent un fournisseur d’autorisation nommé ContosoAuthorizationProvider à la collection de fournisseurs d’autorisation de gestion et définissent le fournisseur d’autorisation par défaut sur ContosoAuthorizationProvider.

AppCmd.exe

Remarque

Vous ne pouvez pas configurer les paramètres <system.webServer/Management> à l’aide d’AppCmd.exe.

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.GetAdministrationConfiguration();

         ConfigurationSection authorizationSection = config.GetSection("system.webServer/management/authorization");
         ConfigurationElementCollection providersCollection = authorizationSection.GetCollection("providers");
         ConfigurationElement addElement = providersCollection.CreateElement("add");
         addElement["name"] = @"ContosoAuthorizationProvider";
         addElement["type"] = @"Contoso.Provider, System.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73";
         providersCollection.Add(addElement);
         authorizationSection["defaultProvider"] = "ContosoAuthorizationProvider";

         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.GetAdministrationConfiguration

      Dim authorizationSection As ConfigurationSection = config.GetSection("system.webServer/management/authorization")
      Dim providersCollection As ConfigurationElementCollection = authorizationSection.GetCollection("providers")
      Dim addElement As ConfigurationElement = providersCollection.CreateElement("add")
      addElement("name") = "ContosoAuthorizationProvider"
      addElement("type") = "Contoso.Provider, System.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73"
      providersCollection.Add(addElement)
      authorizationSection("defaultProvider") = "ContosoAuthorizationProvider"

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject("Microsoft.ApplicationHost.WritableAdminManager"); 
adminManager.CommitPath = "MACHINE/WEBROOT"; 
adminManager.SetMetadata("pathMapper", "AdministrationConfig");

var authorizationSection = adminManager.GetAdminSection("system.webServer/management/authorization", "MACHINE/WEBROOT"); 
var providersCollection = authorizationSection.ChildElements.Item("providers").Collection;

var addElement = providersCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "ContosoAuthorizationProvider";
addElement.Properties.Item("type").Value = "Contoso.Provider, System.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73";
providersCollection.AddElement(addElement);
authorizationSection.Properties.Item("defaultProvider").Value = "ContosoAuthorizationProvider";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT"
adminManager.SetMetadata "pathMapper", "AdministrationConfig"

Set authorizationSection = adminManager.GetAdminSection("system.webServer/management/authorization", "MACHINE/WEBROOT")
Set providersCollection = authorizationSection.ChildElements.Item("providers").Collection

Set addElement = providersCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "ContosoAuthorizationProvider"
addElement.Properties.Item("type").Value = "Contoso.Provider, System.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73"
providersCollection.AddElement(addElement)
authorizationSection.Properties.Item("defaultProvider").Value = "ContosoAuthorizationProvider"

adminManager.CommitChanges()