Você está offline; aguardando reconexão

Como criar chaves usando o Visual translation from VPE for Csharp .NET para uso em autenticação de formulários

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 312906
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 313091.

Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System.Text
  • System.Security.Cryptography

NESTA TAREFA

Sumário
Este artigo descreve como criar as chaves usadas para criptografia, descriptografia e validação de dados de cookie de autenticação de formulários. Você pode usar as teclas que você criar neste artigo para os atributos validationKey e decryptionKey da seção <machinekey> o<system.web> elemento no arquivo Machine.config.


Requisitos

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

back to the top

Criar o projeto

Crie um aplicativo de console Visual translation from VPE for Csharp .NET:
  1. Inicie o Visual Studio NET..
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Em Project Types , clique em projetos translation from VPE for Csharp Visual .
  4. Em modelos , clique em aplicativo de console .
  5. Nomeie o projeto HashConfigCs .
  6. Clique em OK .

Escrever o código para gerar as chaves

O código a seguir lê dois argumentos são passados na linha de comando:
  • O primeiro argumento é o número de bytes é usado para criar o atributo decryptionKey .
  • O segundo argumento é o número de bytes é usado para criar o atributo validationKey .
O código usa um gerador de número aleatório para criar um número aleatório de bytes com base nos argumentos de linha de comando. Após a criação bytes aleatórios, os bytes são formatados em uma seqüência de caracteres hexadecimal é adequada para uso nos arquivos .config.

Observação A seqüência hexadecimal é criada é duas vezes o tamanho do valor que é passado na linha de comando. Por exemplo, se você especificar 24 bytes para uma chave, a seqüência de caracteres resultante é 48 bytes de comprimento após a conversão. Os valores válidos para decryptionKey é 8 ou 24. Isso cria uma chave de 16 bytes para criptografia de dados DES (padrão) ou um byte 48 chave para Triple DES, respectivamente. Os valores válidos para validationKey são 20 a 64. Isso cria chaves de 40 a 128 bytes de comprimento. A saída do código é um inteiro <machinekey> elemento que você pode copiar e colar em um arquivo 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 você pode compilar o aplicativo.

Execute o aplicativo em um prompt de comando passando dois valores inteiros que são o tamanho da descriptografia e as chaves de validação. Por exemplo, se você nomeou o aplicativo de console HashConfigCs.exe, digite a seguinte sintaxe da linha de comando na pasta Bin\debug do aplicativo:
hashconfigcs.exe 24 64
Você pode esperar o aplicativo para retornar a saída é semelhante a seguinte saída:
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"            decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"            validation="SHA1"/>					
Observação Como o código está usando um gerador de números aleatório, a saída é diferente cada vez.


Atualizar o arquivo de configuração

  1. Localize o arquivo Machine.config.
  2. Localize o <system.web> seção no arquivo de configuração.
  3. Substitua a seção <machinekey> com a saída do aplicativo de console. Se a seção <machinekey> não existir, crie-a.
  4. Salve o arquivo de configuração.
  5. Reinicie o IIS em todos os servidores no farm da Web para que as alterações Machine.config entrem em vigor.

Solução de problemas

Verifique se a seção <machinekey> tem chaves idênticas, explícitas (isto é, não use oopção AutoGenerate para atributos na seção <machinekey>) através do Web farm nas seguintes situações:
  • Quando você usa autenticação de formulários.
  • Quando você executa o estado da sessão no modo StateServer.
  • Quando você quiser ViewState esteja disponível em uma Web farm porque o atributo enableViewStateMAC está definido como True por padrão.

Obter mais informações

A seção machineKey deve ser o mesmo entre o web farm nos seguintes casos:
  • Ao usar autenticação de formulários.
  • Quando você executa o estado da sessão no modo StateServer.
  • Quando você deseja viewstate que esteja disponível em um web farm como enableViewStateMac é ativado por padrão.
Referências
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
301240Como implementar autenticação com base em formulários em seu aplicativo ASP.NET usando o .NET translation from VPE for Csharp
311495Como implementar a segurança baseada em função com autenticação com base em formulários em seu aplicativo ASP.NET usando o Visual translation from VPE for Csharp .NET
306590INFO: Visão geral sobre segurança ASP.NET
307626INFO: Visão geral da configuração ASP.NET
estado de exibição

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 312906 - Última Revisão: 07/11/2005 17:22:09 - Revisão: 3.10

Microsoft ASP.NET 1.0, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft ASP.NET 1.1, Microsoft Visual C# .NET 2003 Standard Edition

  • kbmt kbconfig kbhowtomaster kbsecurity kbstate KB312906 KbMtpt
Comentários
d"; document.getElementsByTagName("head")[0].appendChild(m);