Zum Erstellen von mithilfe von Visual C# .NET für Formularauthentifizierung

Eine Microsoft Visual Basic .NET Version dieses Artikels finden Sie unter 313091 .


Dieser Artikel bezieht sich auf die folgenden Namespaces für Microsoft.NET Framework-Klassenbibliothek:
  • System.Text
  • System.Security.Cryptography

IN DIESER AUFGABE

Zusammenfassung

Dieser Artikel beschreibt die Schlüssel zur Verschlüsselung, Entschlüsselung und Validierung von Cookiedaten zur Formularauthentifizierung verwendet. Die Schlüssel können, die in diesem Artikel im Abschnitt < MachineKey > < system.web > -Element in der Datei Machine.config Attribute ValidationKey und DecryptionKey erstellen.

Zurück zum Anfang

Voraussetzungen

Die folgende Liste enthält die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen:
  • Microsoft Windows 2000 oder Microsoft Windows XP
  • Microsoft.NET Framework
  • Microsoft-Internetinformationsdienste (IIS)
Zurück zum Anfang

Erstellen Sie das Projekt

Erstellen Sie eine Visual C#:
  1. Starten Sie Visual Studio .NET.
  2. Im Menü Datei auf neuund klicken Sie dann auf Projekt.
  3. Klicken Sie unter Projekttypenauf Visual C#-Projekte.
  4. Klicken Sie unter Vorlagenauf Konsolenanwendungsprojekt.
  5. Nennen Sie das Projekt
    HashConfigCs.
  6. Klicken Sie auf OK.
Zurück zum Anfang

Schreiben Sie Code zum Generieren der Schlüssel

Der folgende Code liest zwei Argumente in der Befehlszeile übergeben werden:
  • Das erste Argument ist die Anzahl der Bytes, die zum Erstellen des Attributs DecryptionKey .
  • Das zweite Argument ist die Anzahl der Bytes, die zum Erstellen des Attributs ValidationKey .
Der Code verwendet einen Zufallszahlen-Generator zum Erstellen einer zufälligen Anzahl von Bytes basierend auf Befehlszeilenargumente. Erstellung von zufälligen Bytes werden die Bytes in eine hexadezimale Zeichenfolge formatiert, die in der config-Dateien verwenden.

Hinweis Erzeugte hexadezimale Zeichenfolge ist doppelt so groß wie der Wert, der in der Befehlszeile übergeben wird. Wenn Sie 24 Bytes für einen Schlüssel angeben, ist der resultierende Zeichenfolge 48 Byte lang nach der Konvertierung an. Die gültigen Werte für DecryptionKey ist 8 oder 24. Dies erstellt einen 16-Byte-Schlüssel für Data Encryption Standard (DES) oder 48 Byte-Schlüssel für Triple-DES bzw.. Gültige Werte für ValidationKey sind 20 bis 64. Dadurch Schlüsseln von 40 bis 128 Byte lang. Die Ausgabe aus dem Code wird eine gesamte < MachineKey > -Element, das Kopieren und Einfügen einer Datei Machine.config.

Fügen Sie folgenden Code in eine CS-Datei:
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();
}
}
}

Zurück zum Anfang

Die Hashwerte generieren

Sie können jetzt die Anwendung kompilieren.

Führen Sie die Anwendung von einer Befehlszeile aus zwei ganzzahlige Werte, die die Größe der Entschlüsselung und Überprüfung Schlüssel übergeben. Wenn Konsolenanwendungsprojekt HashConfigCs.exe benannt, beispielsweise der folgenden Syntax über die Befehlszeile im Verzeichnis Bin\debug der Anwendung:
hashconfigcs.exe 24 64
Sie erwartet die Anwendung Ausgabe zurück, die der folgenden ähnlich ist:
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
validation="SHA1"/>

Hinweis Da der Code einen Zufallszahlen-Generator verwendet, ist die Ausgabe unterschiedliche.

Zurück zum Anfang

Aktualisieren Sie die Konfigurationsdatei

  1. Suchen Sie die Datei Machine.config.
  2. Suchen Sie im Abschnitt < system.web > in der Konfigurationsdatei.
  3. Die Ausgabe der Konsolenanwendung ersetzen Sie im Abschnitt < MachineKey >. Wenn der Abschnitt < MachineKey > nicht existiert, erstellen Sie ihn.
  4. Speichern Sie die Konfigurationsdatei.
  5. Starten Sie IIS auf allen Servern in der Webfarm Machine.config Änderungen wirksam.
Zurück zum Anfang

Problembehandlung:

Abschnitt < MachineKey > explizite identische Schlüssel verfügen (d. h. verwenden Sie nicht die Option AutoGenerate Attribute im Abschnitt < MachineKey >) in der Webfarm in den folgenden Szenarien:
  • Wenn Sie die Formularauthentifizierung verwenden.
  • Wenn Sie Sitzungsstatus im StateServer-Modus ausführen.
  • Wenn Sie möchten, ViewState in einer Webfarm verfügbar sein, da das Attribut EnableViewStateMAC standardmäßig auf True festgelegt ist.
Zurück zum Anfang

Weitere Informationen

MachineKey -Abschnitt muss in der Webfarm in folgenden Fällen entsprechen:
  • Wenn Sie die Formularauthentifizierung verwenden.
  • Wenn Sie Sitzungsstatus im StateServer-Modus ausführen.
  • Wenn Sie Viewstate möchten in einer Webfarm verfügbar sein, da EnableViewStateMac standardmäßig aktiviert ist.
Zurück zum Anfang

Referenzen

Klicken Sie für weitere Informationen auf die folgenden Artikelnummern, um die betreffenden Artikel in der Microsoft Knowledge Base anzuzeigen:

301240 wie Formularauthentifizierung in Ihrer Anwendung ASP.NET implementiert, mit C# .NET

311495 wie rollenbasierte Sicherheit mit Formularauthentifizierung in Ihrer Anwendung ASP.NET mit Visual C# .NET implementieren

306590 INFO: Übersicht über die Sicherheit von ASP.NET

307626 INFO: Übersicht über ASP.NET

Zurück zum Anfang
Eigenschaften

Artikelnummer: 312906 – Letzte Überarbeitung: 20.01.2017 – Revision: 1

Feedback