Você está offline; aguardando reconexão

Como criar chaves usando o Visual Basic .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: 313091
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 312906.

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 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 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 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
estado de exibição 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
tml>=">