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

Traduções de Artigos Traduções de Artigos
Artigo: 313091 - 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 validationKey e os atributos decryptionKey da secção <machinekey> a<system.web> elemento a Machine.config e o Web.config ficheiros.

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

  1. Inicie o Microsoft Visual Studio NET..
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
  3. Na área Project Types , clique em Projectos do Visual Basic .
  4. Na área modelos , clique em Consola de aplicação .
  5. Na caixa de texto nome , escreva HashConfigVb e, em seguida, clique em OK .

Escrever código para uma palavra-passe hash

O código nesta secção 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 depois da conversão. A saída do código é um inteiro <machinekey> elemento que pode copiar e colar um Machine.config ou um ficheiro Web.config.

  1. Adicione um novo ficheiro de classe chamado KeyCreator ao projecto 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 ficheiro Module1.vb criado por predefinição e, em seguida, adicione o código seguinte na rotina de sub principal :
        Dim MyKeyCreator As New Crypto.KeyCreator()
        MyKeyCreator.CreateMachineKey()
    					
  4. Compilar a aplicação.

Gerar os hashes

Execute a aplicação a partir de uma linha de comandos e, em seguida, passar dois valores de número inteiro que o tamanho da desencriptação e as chaves de validação. Se tiver atribuído a aplicação de consola HashConfigVb.exe, escreva a seguinte sintaxe de linha de comandos na posição directório da aplicação:
HashConfigVb.exe 24 64
A aplicação deverá devolver a saída é semelhante à seguinte saída:
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"
            decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"
            validation="SHA1"/>
					
Nota Uma vez que o código utiliza um gerador de números aleatórios, a saída é diferente de cada vez.

Actualizar o ficheiro de configuração

  1. Localize a Machine.config ou a Web.config ficheiro.
  2. Localize a secção de <system.web> no 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.

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:
308157Como implementar a autenticação baseada em formulários na aplicação do ASP.NET utilizando o Visual Basic .NET
306238Como implementar segurança baseada em funções com a autenticação baseada em formulários na aplicação do ASP.NET utilizando o Visual Basic .NET
306590INFO: Descrição geral da segurança o ASP.NET
307626INFO: Descrição geral de configuração do ASP.NET

Propriedades

Artigo: 313091 - Última revisão: 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 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: 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