Cómo crear claves utilizando Visual Basic .NET para uso en autenticación mediante formularios

Seleccione idioma Seleccione idioma
Id. de artículo: 313091 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo describe cómo crear teclas puede utilizar para el cifrado, descifrado y validación de datos de cookie de autenticación de formularios. Puede utilizar las teclas que cree en este artículo para el validationKey y los atributos decryptionKey de la sección <machinekey> el<system.web> elemento en el archivo Machine.config y Web.config archivos.

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los service pack recomendados que se necesitarán:
  • Microsoft Windows 2000 o Microsoft Windows XP
  • Microsoft .NET framework
  • Servicios de Microsoft Internet Information Server (IIS)

Crear el proyecto

  1. Inicie Microsoft Visual Studio NET..
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
  3. En el área Tipos de proyecto , haga clic en Proyectos de Visual Basic .
  4. En el área, haga clic en Aplicación de consola .
  5. En el cuadro de texto nombre , escriba HashConfigVb y, a continuación, haga clic en Aceptar .

Escribir el código de hash de una contraseña

El código en esta sección lee dos argumentos que se pasan desde la línea de comandos:
  • El primer argumento es el número de bytes que se utiliza para crear el atributo decryptionKey .
  • El segundo argumento es el número de bytes que se utiliza para crear el atributo validationKey .
El código utiliza un generador de números aleatorios para crear un número aleatorio de bytes que se basa en los argumentos de línea de comandos. Una vez creados los bytes aleatorios, los bytes tienen formato en una cadena hexadecimal que resulta adecuada para utilizarlo en los archivos .config.

Nota La cadena hexadecimal que se crea es dos veces el tamaño del valor que se pasa en la línea de comandos. Por ejemplo, si especifica 24 bytes para una clave, la cadena resultante es 48 bytes de longitud después de la conversión. Los valores válidos para decryptionKey es 8 o 24. Esto crea una clave de 16 bytes para el cifrado de datos estándar (DES) o un byte 48 clave para Triple DES, respectivamente. Los valores válidos para validationKey son 20 a 64. Esto crea claves de 40 a 128 bytes de longitud después de la conversión. El resultado del código es todo un <machinekey> elemento que se puede copiar y pegar en un archivo Machine.config o un archivo Web.config.

  1. Agregue un nuevo archivo de clase denominado KeyCreator al proyecto de 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. Abra el archivo de Module1.vb que se crea de forma predeterminada y, a continuación, agregue el código siguiente en la rutina de sub Main :
        Dim MyKeyCreator As New Crypto.KeyCreator()
        MyKeyCreator.CreateMachineKey()
    					
  4. Genere la aplicación.

Generar los valores hash

Ejecutar la aplicación desde un símbolo del sistema y, a continuación, pase dos valores enteros que son el tamaño del descifrado y las claves de validación. Si llama la aplicación de consola HashConfigVb.exe, escriba la siguiente sintaxis en el símbolo del sistema en la Papelera de directorio de la aplicación:
HashConfigVb.exe 24 64
La aplicación debe devolver el resultado que es similar al siguiente resultado:
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"
            decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"
            validation="SHA1"/>
					
Nota Dado que el código utiliza un generador de números aleatorios, el resultado es diferente cada vez.

Actualizar el archivo de configuración

  1. Busque el archivo Machine.config o Web.config archivo.
  2. Busque la sección <system.web> del archivo de configuración.
  3. Reemplazar la sección <machinekey> por el resultado de la aplicación de consola. Si la sección <machinekey> no existe, créela.
  4. Guarde el archivo de configuración.
  5. Reinicie IIS en todos los servidores la granja de servidores Web para que surtan efecto los cambios de Machine.config.

Solución de problemas

Asegúrese de que la sección <machinekey> tiene claves idénticas, explícitas (es decir, no utilice ella opción AutoGenerate para los atributos en la sección <machinekey>) en el conjunto de servidores en los siguientes escenarios:
  • Cuando utilice autenticación de formularios.
  • Al ejecutar el estado de sesión en el modo StateServer.
  • Cuando desea que ViewState esté disponible en una batería de servidores Web porque el atributo enableViewStateMAC está establecido en true de forma predeterminada.

Referencias

Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
308157Cómo implementar la autenticación basada en formularios en su aplicación ASP.NET mediante Visual Basic .NET
306238Cómo implementar seguridad basada en funciones con autenticación basada en formularios en su aplicación ASP.NET mediante Visual Basic .NET
306590INFO: Introducción a la seguridad de ASP.NET
307626INFORMACIÓN: Introducción a configuración de ASP.NET

Propiedades

Id. de artículo: 313091 - Última revisión: lunes, 29 de octubre de 2007 - Versión: 3.10
La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palabras clave: 
kbmt kbproductlink kbconfig kbhowtomaster kbsecurity kbstate KB313091 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 313091

Enviar comentarios

 

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