A criação de chaves utilizando o Visual C# .NET para utilização na autenticação de formulários

Traduções de Artigos Traduções de Artigos
Artigo: 312906 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo descreve como criar as teclas a utilizar para encriptação, desencriptação e validação de dados de cookie de autenticação de formulários. Pode utilizar teclas criados neste artigo para os atributos validationKey e decryptionKey da secção <machinekey> a<system.web> elemento no ficheiro Machine.config.


Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft Windows 2000 ou Microsoft Windows XP
  • Microsoft .NET framework
  • Microsoft Internet Information Services (IIS)

Criar projecto

Crie uma aplicação de consola do Visual C#. NET:
  1. Inicie o Visual Studio NET..
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
  3. Em Project Types , clique em Visual C# Projects .
  4. Em modelos , clique em Consola de aplicação .
  5. Nome do projecto HashConfigCs .
  6. Clique em OK .

Escrever código para gerar as chaves

O seguinte código lê dois argumentos que são transmitidos na linha de comandos:
  • O primeiro argumento é o número de bytes que é utilizado para criar o atributo decryptionKey .
  • O segundo argumento é o número de bytes que é utilizado para criar o atributo validationKey .
O código utiliza um gerador de números aleatórios para criar um número aleatório de bytes com base em argumentos da linha de comandos. Depois de criadas bytes aleatórios, os bytes são formatados para uma cadeia hexadecimal é adequada para utilização em ficheiros .config.

Nota A cadeia hexadecimal que é criada é duas vezes o tamanho do valor que é transmitido na linha de comandos. Por exemplo, se especificar 24 bytes para uma chave, a cadeia resultante é 48 bytes de comprimento depois da conversão. Os valores válidos para decryptionKey é 8 ou 24. Isto cria uma chave de 16 bytes para encriptação de dados padrão (DES) ou um byte 48 chave para Triple DES, respectivamente. Os valores válidos para validationKey são 20 a 64. Isto cria chaves de 40 a 128 bytes de comprimento. A saída do código é um inteiro <machinekey> elemento que pode copiar e colar num ficheiro 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();
        }
    }
}
				

Gerar os hashes

Agora pode compilar a aplicação.

Execute a aplicação a partir de uma linha de comandos por transmissão em dois valores de número inteiro que o tamanho da desencriptação e as chaves de validação. Por exemplo, se tiver atribuído a aplicação de consola HashConfigCs.exe, escreva a seguinte sintaxe na linha de comandos no directório Bin\debug da aplicação:
hashconfigcs.exe 24 64
Pode esperar que a aplicação para devolver a saída é semelhante à seguinte saída:
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
            decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
            validation="SHA1"/>
					
Nota Uma vez que o código está a utilizar um gerador de números aleatórios, a saída é diferente de cada vez.


Actualizar o ficheiro de configuração

  1. Localize o ficheiro Machine.config.
  2. Localize o <system.web> secção do ficheiro de configuração.
  3. Substitua a secção <machinekey> com o resultado da aplicação de consola. Se a secção <machinekey> não existir, crie-o.
  4. Guarde o ficheiro de configuração.
  5. Reinicie o IIS em todos os servidores Web farm para que as alterações Machine.config entrem em vigor.

Resolução de problemas

Certifique-se a secção <machinekey> tem chaves explícitas idênticas (isto é, não utilize aopção AutoGenerate para atributos na secção <machinekey>) através do Web farm nos seguintes cenários:
  • Quando utiliza a autenticação de formulários.
  • Quando executa o estado da sessão em modo StateServer.
  • Quando pretende ViewState esteja disponível através de uma Web farm, porque o atributo enableViewStateMAC está definido como true por predefinição.

Mais informações

A secção machineKey deve ser a mesma através do web farm nos seguintes casos:
  • Quando utilizar a autenticação de formulários.
  • Quando executa o estado da sessão em modo StateServer.
  • Quando pretende viewstate estar disponível através de uma web farm desde enableViewStateMac é activada por predefinição.

Referências

Para obter informações adicionais, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
301240Como implementar a autenticação baseada em formulários na aplicação do ASP.NET utilizando C# .NET
311495Como implementar segurança baseada em funções com a autenticação baseada em formulários na aplicação do ASP.NET utilizando o Visual C# .NET
306590INFO: Descrição geral da segurança o ASP.NET
307626INFO: Descrição geral de configuração do ASP.NET

Propriedades

Artigo: 312906 - Última revisão: 11 de julho de 2005 - Revisão: 3.10
A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbmt kbconfig kbhowtomaster kbsecurity kbstate KB312906 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 312906

Submeter comentários

 

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