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

Traduções deste artigo Traduções deste artigo
ID do artigo: 312906 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

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)

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

Propriedades

ID do artigo: 312906 - Última revisão: segunda-feira, 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 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

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