Partager via


Comment : générer et exécuter l'exemple de fournisseur de configuration protégée

Mise à jour : novembre 2007

Les rubriques de cette section contiennent le code d'un exemple de fournisseur de configuration protégée. L'exemple de fournisseur utilise la classe TripleDESCryptoServiceProvider pour chiffrer et déchiffrer des sections de configuration dans le fichier Web.config.

Cette rubrique montre comment générer l'exemple et configurer une application ASP.NET pour utiliser l'exemple de fournisseur. L'exemple de fournisseur de configuration protégée existe en Visual Basic et en C# et figure dans Implémentation du fournisseur de configuration protégée, exemple.

Génération de l'exemple de fournisseur

Vous devez chiffrer des sections du fichier Web.config à l'aide de l'outil Aspnet_regiis.exe. Le déchiffrement peut être effectué soit de façon explicite à l'aide de l'outil Aspnet_regiis.exe, soit automatiquement par ASP.NET au moment de l'exécution. Par conséquent, le type du fournisseur de l'exemple doit être disponible à la fois pour l'outil Aspnet_regiis.exe et pour ASP.NET. Pour ce faire, le plus simple consiste à compiler le fournisseur avec un nom fort et à le placer dans le Global Assembly Cache (GAC).

Remarque :

L'outil Strong Name Tool (Sn.exe) et l'outil Global Assembly Cache (Gacutil.exe) sont disponibles lorsque vous installez le Kit de développement logiciel (SDK) Windows. Pour plus d'informations, consultez Outil Strong Name Tool (Sn.exe) et Outil Global Assembly Cache Tool (Gacutil.exe).

Pour générer l'exemple de fournisseur

  1. Dans la ligne de commande Windows, exécutez la commande suivante :

    Sn.exe -k keys.snk
    

    Cette commande génère une paire de clés avec nom fort.

    Remarque :

    Si vous ne pouvez pas exécuter la commande, vous devez ajouter le chemin d'accès au .NET Framework à la variable PATH avant d'exécuter la commande. Dans Windows, cliquez avec le bouton droit sur Poste de travail, puis sur Propriétés, sur l'onglet Avancé, puis sur le bouton Variables d'environnement. Dans la liste Variables système, double-cliquez sur la variable Path. Dans la zone de texte Valeur de la variable, ajoutez un point-virgule (;) à la fin des valeurs existantes dans la zone de texte, puis saisissez le chemin d'accès de votre installation .NET Framework. Le .NET Framework est habituellement installé dans le dossier d'installation de Windows à l'emplacement \Microsoft.NET\Framework\numéroVersion.

  2. Créez un fichier programme nommé TripleDESProtectedConfigurationProvider (avec l'extension .vb ou .cs, selon le langage de programmation utilisé) et copiez-y le code de l'exemple de fournisseur issu de Implémentation du fournisseur de configuration protégée, exemple.

  3. Compilez le code de l'exemple de fournisseur et assignez à l'assembly résultant la clé avec nom fort à l'aide de la commande suivante :

    vbc /out:TripleDESProtectedConfigurationProvider.dll /t:library TripleDESProtectedConfigurationProvider.vb /r:System.Configuration.dll /keyfile:keys.snk
    
    csc /out:TripleDESProtectedConfigurationProvider.dll /t:library TripleDESProtectedConfigurationProvider.cs /r:System.Configuration.dll /keyfile:keys.snk
    
  4. Installez l'assembly dans le Global Assembly Cache à l'aide de la commande de ligne de commande suivante :

    gacutil.exe -i TripleDESProtectedConfigurationProvider.dll
    
    Remarque :

    Si vous devez supprimer l'assembly du Global Assembly Cache, vous pouvez utiliser l'outil Gacutil.exe avec la commande suivante :

    gacutil.exe -u TripleDESProtectedConfigurationProvider
    

Création et stockage d'une clé de chiffrement

L'exemple de fournisseur de configuration protégée TripleDES chiffre et déchiffre des sections de configuration à l'aide d'une clé de chiffrement stockée dans un fichier texte sous la forme d'une chaîne hexadécimale. Vous créez le fichier de clé à l'aide du code inclus dans l'exemple de fournisseur. Dans le fichier de clé, la clé est stockée sur la première ligne du fichier et le vecteur (IV) sur la seconde, comme l'illustre l'exemple suivant :

EBBCB17E444EBB9EA2EA7EE3E0FD9E108C6E75A90101D017
8C979426981FD2A6

Après avoir créé le fichier de clé, vous devez le stocker dans un emplacement sécurisé sur le serveur, puis limiter l'accès au fichier de clé à l'identité de l'application ASP.NET, au compte SYSTEM, et aux administrateurs. Vous empêchez ainsi qu'un intrus accède à la clé et rende votre chiffrement inutile.

Pour créer une clé de chiffrement

  1. Créez une application console appelée CreateKey.

  2. Copiez le code suivant en tant que module principal de l'application.

    Imports System
    Imports Samples.AspNet.ProtectedConfiguration
    
    Public Class CreateKey
        Public Shared Sub Main(args() As String)
        Dim filePath As String = args(0)
        Dim provider As TripleDESProtectedConfigurationProvider = _
            New TripleDESProtectedConfigurationProvider()
        provider.CreateKey(filePath)
        Console.WriteLine("New TripleDES key written to '{0}'", filePath)
      End Sub
    End Class
    
    using System;
    using Samples.AspNet.ProtectedConfiguration;
    public class CreateKey
    {
        public static void Main(string[] args)
        {
            string filePath = args[0];
            TripleDESProtectedConfigurationProvider provider = 
                new TripleDESProtectedConfigurationProvider();
            provider.CreateKey(filePath);
            Console.WriteLine("New TripleDES Key written to '{0}'", filePath);
        }
    }
    

    L'exemple de fournisseur de configuration protégée inclut une méthode CreateKey publique qui prend un chemin d'accès comme entrée, génère une nouvelle clé et écrit celle-ci dans le fichier spécifié. Le code de l'application console crée une instance du fournisseur de configuration protégée et appelle sa méthode CreateKey. Il prend un chemin d'accès comme argument de ligne de commande et crée un nouveau fichier de clé à l'emplacement spécifié.

  3. Dans la ligne de commande Windows, exécutez l'application console à l'aide d'une syntaxe similaire à ce qui suit :

    CreateKey "c:\WebSites\SampleApplication\App_Data\Keys.txt"
    

Utilisation de l'exemple de fournisseur dans une application ASP.NET

Après avoir compilé le fournisseur et créé une clé de chiffrement, vous pouvez configurer une application ASP.NET pour utiliser le fournisseur.

Pour utiliser l'exemple de fournisseur dans une application ASP.NET

  1. Ouvrez le fichier Web.config de votre site Web. Si l'application ne possède pas de fichier Web.config, créez un fichier texte nommé Web.config dans le dossier racine du site Web et ajoutez les éléments suivants :

    <?xml version="1.0"?>
    <configuration>
      <system.web>
    
      </system.web>
    </configuration>
    
  2. Dans la section configuration (en tant qu'homologue de l'élément system.web), ajoutez les éléments en surbrillance suivants :

    <configuration>
       <configProtectedData>     <providers>       <add name="TripleDESProvider"       type="Samples.AspNet.ProtectedConfiguration.TripleDESProtectedConfigurationProvider,                  TripleDESProtectedConfigurationProvider,                  Version=0.0.0.0, CultureInfo=neutral,                  PublicKeyToken=a5a9eb4fc5306403,                  processorArchitecture=MSIL"            keyFilePath="c:\WebSites\SampleApplication\App_Data\Keys.txt" />     </providers>   </configProtectedData>
    </configuration>
    
    Remarque :

    Modifiez la valeur de l'attribut keyFilePath pour qu'elle corresponde à l'emplacement de stockage du fichier de clé précédemment créé.

  3. Dans la section configuration, ajoutez une section <connectionStrings> et une ou plusieurs chaînes de connexion.

    L'exemple suivant affiche une section connectionStrings qui contient une chaîne de connexion de l'exemple de base de données Northwind SQL Server. Il est supposé que le nom de l'instance SQL Server est SampleSQLServer.

    <connectionStrings>
      <add name="NorthwindConnectionString" 
        connectionString="Data Source=SampleSQLServer;Initial Catalog=Northwind;Persist Security Info=True;" Integrated Security=SSPI;"
        providerName="System.Data.SqlClient" />
    </connectionStrings>
    
    Remarque :

    Modifiez la valeur connectionString pour y inclure des informations de connexion à la base de données SQL Server que vous souhaitez utiliser.

  4. Enregistrez le fichier et fermez-le.

  5. Dans la ligne de commande Windows, exécutez la commande suivante pour chiffrer la section connectionStrings du fichier Web.config :

    aspnet_regiis.exe -pe "connectionStrings" -app "/SampleApplication" -prov "TripleDESProvider"
    
    Remarque :

    Pour SampleApplication, substituez le nom de l'application Web dans laquelle vous souhaitez tester le chiffrement.

  6. Ouvrez le fichier Web.config et notez que la chaîne de connexion a été chiffrée.

  7. Dans l'application Web, utilisez la chaîne de connexion chiffrée.

    Par exemple, ajoutez un contrôle SqlDataSource et affectez à sa propriété ConnectionString la valeur "NorthwindConnectionString", comme illustré dans l'exemple suivant :

    <asp:SqlDataSource ID="SqlDataSource1" 
    
      ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
      SelectCommand="SELECT ProductName FROM Products">
    </asp:SqlDataSource>
    
  8. Liez un contrôle tel qu'un contrôle GridView au contrôle SqlDataSource.

  9. Exécutez la page.

    Vous pouvez constater que les données s'affichent de la façon prévue. ASP.NET a déchiffré la chaîne de connexion au moment de l'exécution avant de l'utiliser pour se connecter à la base de données Northwind.

Voir aussi

Concepts

Implémentation d'un fournisseur de configuration protégée

Autres ressources

Chiffrement des informations de configuration à l'aide de la configuration protégée