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

Seleccione idioma Seleccione idioma
Id. de artículo: 312906 - 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 los atributos validationKey y decryptionKey de la sección <machinekey> el<system.web> elemento en el archivo Machine.config.


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

Crear una aplicación de consola Visual C#. NET:
  1. Inicie Visual Studio NET..
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
  3. En Tipos de proyecto , haga clic en Proyectos de Visual C# .
  4. En plantillas , haga clic en aplicación de consola .
  5. Proyecto el nombre HashConfigCs .
  6. Haga clic en Aceptar .

Escribir el código para generar las claves

El código siguiente 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. El resultado del código es todo un <machinekey> elemento que se puede copiar y pegar en un archivo 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();
        }
    }
}
				

Generar los valores hash

Ahora puede compilar la aplicación.

Ejecute la aplicación desde un símbolo del sistema pasando dos valores enteros que son el tamaño del descifrado y las claves de validación. Por ejemplo, si llama la aplicación de consola HashConfigCs.exe, escriba la siguiente sintaxis desde la línea de comandos en el directorio Bin\debug de la aplicación:
hashconfigcs.exe 24 64
Puede esperar la aplicación para devolver el resultado que es similar al siguiente resultado:
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
            decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
            validation="SHA1"/>
					
Nota Porque el código está utilizando un generador de números aleatorios, el resultado es diferente cada vez.


Actualizar el archivo de configuración

  1. Busque el archivo Machine.config.
  2. Busque el <system.web> sección 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.

Obtener más información

La sección machineKey debe ser el mismo en la granja web en los casos siguientes:
  • Cuando se utiliza autenticación mediante formularios.
  • Al ejecutar el estado de sesión en el modo StateServer.
  • Cuando desea que viewstate esté disponible en una granja web ya que enableViewStateMac está activado 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:
301240Cómo implementar la autenticación basada en formularios en su aplicación ASP.NET mediante C# .NET
311495Cómo implementar seguridad basada en funciones con autenticación basada en formularios en su aplicación ASP.NET utilizando Visual C# .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: 312906 - Última revisión: lunes, 11 de julio de 2005 - Versión: 3.10
La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Palabras clave: 
kbmt kbconfig kbhowtomaster kbsecurity kbstate KB312906 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): 312906

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