Comment créer des clés en utilisant Visual Basic .NET pour l'authentification sur les formulaires

Traductions disponibles Traductions disponibles
Numéro d'article: 313091 - 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 le validationKey et les attributs decryptionKey de la section <machinekey> dans le<system.web>élément dans le machine.config et le Web.config fichiers.

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

  1. Démarrez Microsoft Visual Studio .NET.
  2. Dans le menu Fichier , pointez sur Nouveau et puis cliquez sur le projet .
  3. Dans la zone types de projets , cliquez sur projets Visual Basic .
  4. Dans la zone modèles , cliquez sur application console .
  5. Dans la zone de texte Nom , tapez HashConfigVb et puis cliquez sur OK .

Écrivez le code à un mot de passe de hachage

Le code dans cette section 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 après la conversion. La sortie à partir du code est un ensemble <machinekey>élément que vous pouvez copier et coller un machine.config ou d'un fichier Web.config.

  1. Ajouter un nouveau fichier de classe nommé KeyCreator à votre projet Visual Basic.
  2. Replace the existing code in the KeyCreator.vb file with the following code:
    Imports System
    Imports System.Text
    Imports System.Security.Cryptography
    
    Namespace Crypto
      Public Class KeyCreator
    	
        Public Shared Sub CreateMachineKey()
          Dim commandLineArgs As String()
          commandLineArgs = System.Environment.GetCommandLineArgs()
    
          Dim decryptionKey As String
          decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs(1)))
          Dim validationKey As String
          validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs(2)))
    
          Console.WriteLine("<machineKey validationKey=""{0}"" decryptionKey=""{1}"" validation=""SHA1""/>", _
          validationKey, decryptionKey)
         End Sub
    
         Public Shared Function CreateKey(numBytes As Integer) As String
           Dim rng As RNGCryptoServiceProvider = New RNGCryptoServiceProvider()
           Dim buff(numBytes -1) As Byte
    
           rng.GetBytes(buff)
    				
           Return BytesToHexString(buff)
         End Function
     
         Public Shared Function BytesToHexString(bytes As Byte()) As String
           Dim hexString As StringBuilder = New StringBuilder(64)
           Dim counter as Integer
    
           For counter = 0 To bytes.Length - 1
             hexString.Append(String.Format("{0:X2}", bytes(counter)))
           Next
    
           Return hexString.ToString()
        End Function
    
      End Class
    End Namespace
    					
  3. Ouvrez le fichier Module1.vb est créé par défaut et ajoutez ensuite le code suivant dans la sous-routine principal :
        Dim MyKeyCreator As New Crypto.KeyCreator()
        MyKeyCreator.CreateMachineKey()
    					
  4. Générez l'application.

Générer les valeurs de hachage

Exécutez l'application à partir d'une invite de commande et puis la passer dans deux valeurs nombre entier qui sont la taille du décryptage et les clés de validation. Si vous appelle l'application de console HashConfigVb.exe, tapez la syntaxe suivante à l'invite de commandes dans l'emplacement répertoire de l'application :
HashConfigVb.exe 24 64
L'application doit renvoyer le résultat semblable à la sortie suivante :
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"
            decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"
            validation="SHA1"/>
					
note Étant donné que le code utilise un générateur de nombre aléatoire, le résultat est différent chaque fois.

Mettez à jour le fichier de configuration

  1. Recherchez le machine.config ou Web.config fichier.
  2. Recherchez la section <system.web> 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.

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 :
308157 Comment faire pour implémenter l'authentification basée sur les formulaires dans votre application ASP.NET à l'aide de Visual Basic .NET
306238 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 Basic .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: 313091 - Dernière mise à jour: lundi 29 octobre 2007 - Version: 3.10
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Initiation
Mots-clés : 
kbmt kbproductlink kbconfig kbhowtomaster kbsecurity kbstate KB313091 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: 313091
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