A criação de chaves utilizando o Visual Basic .NET para utilização na 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 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
Para obter uma Microsoft Visual C# .NET versão deste artigo, consulte 312906.

Este artigo faz referência à seguintes espaços de nomes Microsoft .NET Framework Class Library:
  • System.Text
  • System.Security.Cryptography

NESTA TAREFA

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 SystemImports System.TextImports System.Security.CryptographyNamespace 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 ClassEnd 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
estado da vista webfarm

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 313091 - Última Revisão: 10/29/2007 14:53:07 - Revisão: 3.10

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

  • kbmt kbproductlink kbconfig kbhowtomaster kbsecurity kbstate KB313091 KbMtpt
Comentários