Artikel-ID: 312906 - Geändert am: Montag, 11. Juli 2005 - Version: 3.10

Wie Sie Schlüssel erstellen, indem mithilfe von Visual c# .NET für die Verwendung in Formularauthentifizierung

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.

Auf dieser Seite

Alles erweitern | Alles schließen

Zusammenfassung

Dieser Artikel beschreibt die Schlüssel für Verschlüsselung, Entschlüsselung und Überprüfung der Authentifizierung Cookie Formulardaten erstellen. Können Sie die Tasten, die Sie in diesem Artikel im Abschnitt "<machinekey>" für die Attribute ValidationKey "und" DecryptionKey erstellen die<system.web>-Element in der Datei Machine.config.


Voraussetzungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen:
  • Microsoft Windows 2000 oder Microsoft Windows XP
  • Microsoft .NET framework
  • Microsoft Internetinformationsdienste (IIS)

Erstellen des Projekts

Erstellen Sie eine Visual c#-Konsolenanwendung:
  1. Starten Sie Visual Studio .NET.
  2. Zeigen im Menü Datei auf neu , und klicken Sie dann auf Projekt .
  3. Klicken Sie unter Projekttypen auf Visual C#-Projekte .
  4. Klicken Sie unter Vorlagen auf Konsolenanwendung .
  5. Nennen Sie das Projekt HashConfigCs .
  6. Klicken Sie auf OK .

Schreiben Sie den Code, der Schlüssel generieren

Der folgende Code liest zwei Argumente, die über die Befehlszeile übergeben werden:
  • Das erste Argument ist die Anzahl der Bytes, mit der das DecryptionKey -Attribut erstellt.
  • Das zweite Argument ist die Anzahl der Bytes, die zum Erstellen ValidationKey -Attribut verwendet wird.
Der Code verwendet ein Zufallszahlengenerators eine zufällige Anzahl von Bytes, die basierend auf die Befehlszeilenargumente erstellt. Nachdem die zufällige Bytes erstellt wurden, werden die Bytes in eine hexadezimale Zeichenfolge formatiert, die für die Verwendung in der config-Dateien geeignet ist.

Hinweis: Die hexadezimale Zeichenfolge, die erstellt wird, ist zweimal die Größe des Werts, der in der Befehlszeile übergeben wird. Beispielsweise ist 24 Byte für einen Schlüssel angeben, die resultierende Zeichenfolge 48 Byte nach der Konvertierung. Die gültigen Werte für DecryptionKey ist 8 oder 24. Dies erstellt einen 16-Byte-Schlüssel für die Datenverschlüsselung DES (Standard) oder eine 48 Byte Schlüssel für Triple-DES bzw.. Gültige Werte für ValidationKey sind 20 bis 64. Dies erstellt Schlüssel von 40 bis 128 Byte Länge. Die Ausgabe aus dem Code ist eine ganze <machinekey> Element, das Sie kopieren und in einer Machine.config-Datei einfügen können.

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();
        }
    }
}
				

Die Hashwerte erzeugen

Jetzt können Sie die Anwendung kompilieren.

Führen Sie durch die Übergabe zwei Ganzzahlwerte, die die Größe der die Entschlüsselung und Überprüfung Schlüssel sind die Anwendung von einer Eingabeaufforderung aus. Geben Sie die folgende Syntax in der Befehlszeile im Verzeichnis Bin\debug der Anwendung beispielsweise, wenn Sie die Konsolenanwendung HashConfigCs.exe benannt:
hashconfigcs.exe 24 64
Sie können die Ausgabe zurück, vergleichbar mit der folgenden Ausgabe wird, die Anwendung erwarten:
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
            decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
            validation="SHA1"/>
					
Hinweis: Da der Code ein Zufallszahlen-Generators verwendet wird, unterscheidet die Ausgabe jedes Mal.


Aktualisieren Sie die Konfigurationsdatei

  1. Suchen Sie die Datei Machine.config.
  2. Suchen Sie die <system.web>-Abschnitt der Konfigurationsdatei.
  3. Ersetzen Sie im Abschnitt <machinekey> durch die Ausgabe der Konsolenanwendung. Wenn der <machinekey>-Abschnitt nicht vorhanden ist, erstellen Sie es.
  4. Speichern Sie die Konfigurationsdatei.
  5. Starten Sie IIS neu auf allen Servern in der Webfarm, damit die Machine.config Änderungen wirksam werden.

Problembehandlung

Stellen Sie sicher, dass der <machinekey>-Abschnitt identisch, explizite Schlüssel verfügt (d. h., verwenden Sie nicht dieOption AutoGenerate für Attribute in Abschnitt <machinekey>) in der Webfarm in den folgenden Szenarien:
  • Wenn Sie die Formularauthentifizierung verwenden.
  • Wenn Sie Sitzungsstatus in StateServer-Modus ausführen.
  • Wenn Sie möchten ViewState in einer Webfarm verfügbar sein, da standardmäßig das Attribut EnableViewStateMAC auf true festgelegt ist.

Weitere Informationen

Abschnitt MachineKey sollten in der Webfarm in den folgenden Fällen übereinstimmen:
  • Bei Verwendung von Formularauthentifizierung.
  • Wenn Sie Sitzungsstatus in StateServer-Modus ausführen.
  • Wenn Sie Viewstate möchten über eine Webfarm verfügbar sein, da EnableViewStateMac standardmäßig aktiviert ist.

Informationsquellen

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
301240  (http://support.microsoft.com/kb/301240/ ) Wie Sie formularbasierte Authentifizierung in Ihrer ASP.NET-Anwendung implementieren, mithilfe von Visual c# .NET
311495  (http://support.microsoft.com/kb/311495/ ) Wie Sie rollenbasierte Sicherheit mit der formularbasierten Authentifizierung in Ihrer ASP.NET-Anwendung implementieren, mithilfe von Visual c# .NET
306590  (http://support.microsoft.com/kb/306590/ ) INFO: Überblick über die ASP.NET-Sicherheit
307626  (http://support.microsoft.com/kb/307626/ ) INFO: ASP.NET-Konfiguration (Übersicht)

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Keywords: 
kbmt kbconfig kbhowtomaster kbsecurity kbstate KB312906 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 312906  (http://support.microsoft.com/kb/312906/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.