Comment créer des clés à l'aide de Visual C# .NET pour une utilisation de l'authentification sur les formulaires

Traductions disponibles Traductions disponibles
Numéro d'article: 312906 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique comment créer des touches à utiliser pour chiffrement, le décryptage et validation des données cookie d'authentification Forms. Vous pouvez utiliser les touches que vous créez dans cet article pour les attributs validationKey et decryptionKey de la section <machinekey> dans le<system.web>élément dans le fichier machine.config.


Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Windows 2000 ou Microsoft Windows XP
  • Microsoft .NET framework
  • Microsoft Internet Information Services (IIS)

Créer le projet

Créer une application de console Visual C# .NET :
  1. Démarrez Visual Studio .NET.
  2. Dans le menu Fichier , pointez sur Nouveau et puis cliquez sur le projet .
  3. Sous types de projets , cliquez sur projets Visual C# .
  4. Sous modèles , cliquez sur application console .
  5. Nommez le projet HashConfigCs .
  6. Cliquez sur OK .

Écrire le code pour générer les clés

Le code suivant indique les deux arguments qui sont passés à partir de la ligne de commande :
  • Le premier argument est le nombre d'octets est utilisé pour créer l'attribut decryptionKey .
  • Le second argument est le nombre d'octets qui sert à créer l'attribut validationKey .
Le code utilise un générateur de nombre aléatoire pour créer un nombre aléatoire d'octets selon les arguments de ligne de commande. Après avoir créé les octets aléatoires, les octets sont mis en forme en une chaîne hexadécimale adaptée à utiliser dans les fichiers .config.

note La chaîne hexadécimale qui est créée est deux fois la taille de la valeur qui est transmise à la ligne de commande. Par exemple, si vous spécifiez 24 octets pour une clé, la chaîne résultante est 48 octets de longueur après la conversion. Les valeurs valides pour decryptionKey est 8 ou 24. Cela crée une clé 16 octets pour Data Encryption Standard (DES) ou un octet 48 clé de Triple DES, respectivement. Les valeurs valides pour validationKey sont 20 à 64. Cela crée clés à partir de 40 à 128 octets à une longueur. La sortie à partir du code est un ensemble <machinekey>élément que vous pouvez copier et coller dans un fichier machine.config.

Add the following code to a .cs file:
using System;
using System.Text;
using System.Security.Cryptography;

namespace Crypto
{
    public class KeyCreator
    {
        public static void Main(String[] args)
        {			
            String[] commandLineArgs = System.Environment.GetCommandLineArgs();
            string decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs[1]));
            string validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs[2]));

            Console.WriteLine("<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\" validation=\"SHA1\"/>", validationKey, decryptionKey);
        }	

        static String CreateKey(int numBytes) 
        {
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            byte[] buff = new byte[numBytes];

            rng.GetBytes(buff);
            return BytesToHexString(buff);
        }

        static String BytesToHexString(byte[] bytes) 
        {
            StringBuilder hexString = new StringBuilder(64);

            for (int counter = 0; counter < bytes.Length; counter++) 
            {
                hexString.Append(String.Format("{0:X2}", bytes[counter]));
            }
            return hexString.ToString();
        }
    }
}
				

Générer les valeurs de hachage

Vous pouvez maintenant compiler l'application.

Exécutez l'application à partir d'une invite de commande en passant des deux valeurs entier qui sont la taille du décryptage et les clés de validation. Par exemple, si vous appelle l'application de console HashConfigCs.exe, tapez la syntaxe suivante à partir de la ligne de commande dans le répertoire Bin\debug de l'application :
hashconfigcs.exe 64 24
Vous pouvez vous attendre l'application pour renvoyer le résultat semblable à la sortie suivante :
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
            decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
            validation="SHA1"/>
					
note Étant donné que le code est utilisez un générateur de nombre aléatoire, la sortie est différente chaque fois.


Mettez à jour le fichier de configuration

  1. Recherchez le fichier machine.config.
  2. Recherchez le <system.web>section dans le fichier de configuration.
  3. Remplacer la section <machinekey> avec la sortie à partir de l'application de console. Si la section <machinekey> n'existe pas, créez-la.
  4. Enregistrez le fichier de configuration.
  5. Redémarrer IIS sur tous les serveurs de la batterie Web pour que les modifications machine.config prennent effet.

Résolution des problèmes

Assurez-vous que la section <machinekey> a clés identiques, explicites (c'est-à-dire, n'utilisez pas leoption AutoGenerate pour les attributs de la section <machinekey>) sur la batterie de serveurs Web dans les scénarios suivants :
  • Lorsque vous utilisez l'authentification sur les formulaires.
  • Lorsque vous exécutez l'état de session dans le mode StateServer.
  • Lorsque vous souhaitez que ViewState soient disponibles sur une batterie de serveurs Web parce que l'attribut enableViewStateMAC est défini sur True par défaut.

Plus d'informations

La section machineKey doit être identiques sur la batterie de serveurs web dans les cas suivants :
  • Lorsque vous utilisez l'authentification sur les formulaires.
  • Lorsque vous exécutez l'état de session dans le mode StateServer.
  • Lorsque vous souhaitez que état d'affichage soit disponible sur une batterie de serveurs web depuis enableViewStateMac est activée par défaut.

Références

Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
301240 Comment faire pour implémenter l'authentification basée sur les formulaires dans votre application ASP.NET à l'aide de Visual c# .NET
311495 Comment faire pour implémenter sécurité basée sur les rôles avec l'authentification basée sur les formulaires dans votre application ASP.NET à l'aide de Visual C# .NET
306590 INFO : présentation de sécurité ASP.NET
307626 INFO : présentation de configuration ASP.NET

Propriétés

Numéro d'article: 312906 - Dernière mise à jour: lundi 11 juillet 2005 - Version: 3.10
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Initiation
Mots-clés : 
kbmt kbconfig kbhowtomaster kbsecurity kbstate KB312906 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 312906
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com