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

Traduzione articoli Traduzione articoli
Identificativo articolo: 312906 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

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 gli attributi di validationKey e decryptionKey della sezione <machinekey> il<system.web> elemento nel file Machine.config.


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

Creare un'applicazione di console Visual C#. NET:
  1. Avviare Visual Studio NET..
  2. Scegliere Nuovo dal menu file , quindi progetto .
  3. In Tipi progetto fare clic su Progetti di Visual C# .
  4. In modelli , fare clic su applicazione console .
  5. Denominare il progetto HashConfigCs .
  6. Fare clic su OK .

Scrivere il codice per generare le chiavi

Il codice riportato di seguito 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. L'output dal codice è un intero <machinekey> elemento che è possibile copiare e incollare in un file Machine.config.

Add the following code to a .cs file:
using System;
using System.Text;
using System.Security.Cryptography;

namespace Crypto
{
    public class KeyCreator
    {
        public static void Main(String[] args)
        {			
            String[] commandLineArgs = System.Environment.GetCommandLineArgs();
            string decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs[1]));
            string validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs[2]));

            Console.WriteLine("<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\" validation=\"SHA1\"/>", validationKey, decryptionKey);
        }	

        static String CreateKey(int numBytes) 
        {
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            byte[] buff = new byte[numBytes];

            rng.GetBytes(buff);
            return BytesToHexString(buff);
        }

        static String BytesToHexString(byte[] bytes) 
        {
            StringBuilder hexString = new StringBuilder(64);

            for (int counter = 0; counter < bytes.Length; counter++) 
            {
                hexString.Append(String.Format("{0:X2}", bytes[counter]));
            }
            return hexString.ToString();
        }
    }
}
				

Generare gli hash

È ora possibile compilare l'applicazione.

Eseguire l'applicazione dal prompt dei comandi di tramite il passaggio di due valori integer della dimensione della decrittografia e le chiavi di convalida. Ad esempio, se l'applicazione di console HashConfigCs.exe è denominata, digitare la sintassi seguente dalla riga di comando nella directory Bin\debug dell'applicazione:
hashconfigcs.exe 24 64
È possibile prevedere l'applicazione per restituire l'output è simile al seguente output:
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
            decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
            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.
  2. Individuare il <system.web> sezione 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.

Ulteriori informazioni

La sezione machineKey deve corrispondere al livello di farm web nei seguenti casi:
  • Quando si utilizza l'autenticazione basata su form.
  • Quando si esegue lo stato della sessione in modalità StateServer.
  • Quando si desidera viewstate sia disponibile in una farm web poiché enableViewStateMac è attivata per impostazione predefinita.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
301240Come implementare l'autenticazione basata su form nell'applicazione ASP.NET utilizzando C# .NET
311495Come implementare protezione basata sui ruoli con l'autenticazione basata su form in un'applicazione ASP.NET utilizzando Visual C# .NET
306590INFORMAZIONI: Cenni preliminari sulla protezione ASP.NET
307626INFORMAZIONI: Cenni preliminari sulla configurazione di ASP.NET

Proprietà

Identificativo articolo: 312906 - Ultima modifica: lunedì 11 luglio 2005 - Revisione: 3.10
Le informazioni in questo articolo si applicano a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Chiavi: 
kbmt kbconfig kbhowtomaster kbsecurity kbstate KB312906 KbMtit
Traduzione automatica articoli
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: 312906
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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