Al momento sei offline in attesa che la connessione Internet venga ristabilita

Come creare chiavi tramite utilizzando Visual Basic .NET per l'utilizzo nell'autenticazione basata su form

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 313091
Per la una versione di Microsoft Visual C# .NET di questo articolo, vedere 312906.

Questo articolo si riferisce ai seguenti spazi dei nomi delle librerie di classi di Microsoft .NET Framework:
  • System.Text
  • System.Security.Cryptography

Contenuto dell'attività

Sommario
In questo articolo viene descritto come creare le chiavi da utilizzare per la crittografia, decrittografia e convalida dei dati di cookie di autenticazione form. È possibile utilizzare i tasti creati in questo articolo per il validationKey e gli attributi di decryptionKey della sezione <machinekey> il<system.web> elemento nel file Machine.config e Web.config file.

Requisiti

Nell'elenco seguente sono indicati hardware, software, infrastruttura di rete e i service pack è necessario:
  • Microsoft Windows 2000 o Microsoft Windows XP
  • Microsoft .NET framework
  • Microsoft Internet Information Services (IIS)

Creare il progetto

  1. Avviare Microsoft Visual Studio .NET.
  2. Scegliere Nuovo dal menu file , quindi progetto .
  3. Nell'area Tipi progetto , fare clic su Progetti di Visual Basic .
  4. Nell'area modelli , fare clic su Applicazione Console .
  5. Nella casella di testo nome digitare HashConfigVb e quindi fare clic su OK .

Scrivere il codice hash di una password

Il codice in questa sezione legge due argomenti che vengono passati dalla riga di comando:
  • Il primo argomento è il numero di byte viene utilizzato per creare l'attributo decryptionKey .
  • Il secondo argomento è il numero di byte viene utilizzato per creare l'attributo validationKey .
Il codice utilizza un generatore di numeri casuali per creare un numero casuale di byte sulla base degli argomenti della riga di comando. Dopo aver creati i byte casuali, i byte vengono formattati in una stringa esadecimale che è adatto per l'utilizzo nei file con estensione config.

Nota La stringa esadecimale creata è due volte la dimensione del valore che viene passato nella riga di comando. Ad esempio, se si specificano 24 byte per una chiave, la stringa risultante è 48 byte di lunghezza dopo la conversione. I valori validi per decryptionKey è 8 o 24. Questo crea una chiave a 16 byte per Data Encryption Standard (DES) o un 48 byte chiave Triple DES, rispettivamente. I valori validi per validationKey sono 20 a 64. Questo crea chiavi da 40 a 128 byte di lunghezza dopo la conversione. L'output dal codice è un intero <machinekey> elemento che è possibile copiare e incollare in un file Machine.config o in un file Web.config.

  1. Consente di aggiungere un nuovo file di classe denominato KeyCreator al progetto 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. Aprire il file Module1.vb in base all'impostazione predefinita viene creato e aggiungere il codice riportato di seguito nella routine sub Main :
        Dim MyKeyCreator As New Crypto.KeyCreator()    MyKeyCreator.CreateMachineKey()					
  4. Compilare l'applicazione.

Generare gli hash

Eseguire l'applicazione da un prompt dei comandi e quindi passare due valori integer della dimensione della decrittografia e le chiavi di convalida. Se l'applicazione di console HashConfigVb.exe è denominata, digitare la seguente sintassi al prompt dei comandi nella collocazione di directory dell'applicazione:
HashConfigVb.exe 24 64
L'applicazione deve restituire un output simile a quello riportato di seguito:
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"            decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"            validation="SHA1"/>					
Nota Poiché il codice utilizza un generatore di numeri casuali, l'output è diverso ogni volta.

Aggiornare il file di configurazione

  1. Individuare il file Machine.config o Web.config file.
  2. Individuare la sezione di <system.web> nel file di configurazione.
  3. Sostituire la sezione di <machinekey> con l'output dall'applicazione console. Se la sezione <machinekey> non esiste, crearla.
  4. Salvare il file di configurazione.
  5. Riavviare IIS su tutti i server della farm Web rendere effettive le modifiche di Machine.config.

Risoluzione dei problemi

Assicurarsi che la sezione <machinekey> chiavi identiche, esplicite (ovvero, non utilizzare ilopzione AutoGenerate per gli attributi nella sezione <machinekey>) livello di farm Web nei seguenti scenari:
  • Quando si utilizza l'autenticazione basata su form.
  • Quando si esegue lo stato della sessione in modalità StateServer.
  • Quando si desidera che ViewState sia disponibile in una Web farm, perché l'attributo enableViewStateMAC è impostato su true per impostazione predefinita.
Riferimenti
Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
308157Come implementare l'autenticazione basata su form nell'applicazione ASP.NET utilizzando Visual Basic .NET
306238Come implementare protezione basata sui ruoli con l'autenticazione basata su form in un'applicazione ASP.NET utilizzando Visual Basic .NET
306590INFORMAZIONI: Cenni preliminari sulla protezione ASP.NET
307626INFORMAZIONI: Cenni preliminari sulla configurazione di ASP.NET
stato di visualizzazione Webfarm

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 313091 - Ultima revisione: 10/29/2007 14:53:07 - Revisione: 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 KbMtit
Feedback
;" onerror="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> /html>