Como criar chaves usando o Visual Basic .NET para uso em autenticação de formulários

Traduções deste artigo Traduções deste artigo
ID do artigo: 313091 - 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 validationKey e os atributos decryptionKey da seção <machinekey> o<system.web> elemento no Machine.config e Web.config arquivos.

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

  1. Inicie o Microsoft Visual Studio NET..
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Na área Project Types , clique em Projetos do Visual Basic .
  4. Na área modelos , clique em Aplicativo de console .
  5. Na caixa de texto nome , digite HashConfigVb e, em seguida, clique em OK .

Escrever o código para uma senha de hash

O código nesta seção 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 após a conversão. A saída do código é um inteiro <machinekey> elemento que você pode copiar e colar em um Machine.config ou um arquivo Web.config.

  1. Adicione um novo arquivo de classe chamado KeyCreator ao seu projeto 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 o arquivo Module1.vb que é criado por padrão e em seguida, adicione o código seguinte a sub-rotina principal :
        Dim MyKeyCreator As New Crypto.KeyCreator()
        MyKeyCreator.CreateMachineKey()
    					
  4. Crie o aplicativo.

Gerar os hashes

Execute o aplicativo em um prompt de comando e, em seguida, passe em dois valores inteiros que são o tamanho da descriptografia e as chaves de validação. Se você nomeou o aplicativo de console HashConfigVb.exe, digite a seguinte sintaxe no prompt de comando na Lixeira diretório do aplicativo:
HashConfigVb.exe 24 64
O aplicativo deve retornar a saída é semelhante a seguinte saída:
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"
            decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"
            validation="SHA1"/>
					
Observação Como o código usa um gerador de números aleatório, a saída é diferente cada vez.

Atualizar o arquivo de configuração

  1. Localize o Machine.config ou Web.config arquivo.
  2. Localize a seção <system.web> 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.

Referências

Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
308157Como implementar autenticação com base em formulários em seu aplicativo ASP.NET usando Visual Basic .NET
306238Como implementar a segurança baseada em função com autenticação com base em formulários em seu aplicativo ASP.NET usando Visual Basic .NET
306590INFO: Visão geral sobre segurança ASP.NET
307626INFO: Visão geral da configuração ASP.NET

Propriedades

ID do artigo: 313091 - Última revisão: segunda-feira, 29 de outubro de 2007 - Revisão: 3.10
A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbmt kbproductlink kbconfig kbhowtomaster kbsecurity kbstate KB313091 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: 313091

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