Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Wie Sie Schlüssel erstellen mit Visual Basic .NET für die Verwendung in Formularauthentifizierung

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: 313091
Eine Microsoft Visual c# .NET Version dieses Artikels finden Sie unter 312906.

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

Inhalt

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 ValidationKey und die DecryptionKey Attribute des im Abschnitt "<machinekey>" Erstellen der<system.web>-Element in Machine.config und Web.config-Dateien.

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

  1. Starten Sie Microsoft Visual Studio .NET.
  2. Zeigen im Menü Datei auf neu , und klicken Sie dann auf Projekt .
  3. Klicken Sie im Bereich Projekttypen auf Visual Basic-Projekte .
  4. Klicken Sie im Bereich Vorlagen auf Konsolenanwendung .
  5. Geben Sie in das Textfeld Name HashConfigVb und klicken Sie dann auf OK .

Schreiben Sie den Code, ein Kennwort hash

Der Code in diesem Abschnitt 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 nach der Konvertierung. Die Ausgabe aus dem Code ist eine ganze <machinekey>-Element, das Sie kopieren und in einer Machine.config oder einer Datei Web.config einfügen können.

  1. Fügen Sie eine neue Klassendatei mit dem Namen KeyCreator auf das Visual Basic-Projekt.
  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. Öffnen Sie die Module1.vb-Datei, die vom Standardwert erstellt wird, und fügen Sie folgenden Code in die Sub Main -Routine:
        Dim MyKeyCreator As New Crypto.KeyCreator()    MyKeyCreator.CreateMachineKey()					
  4. Erstellen Sie die Anwendung.

Die Hashwerte erzeugen

Führen Sie die Anwendung von einer Eingabeaufforderung aus, und übergeben Sie in zwei Ganzzahlwerte, die die Größe der die Entschlüsselung und Überprüfung Schlüssel sind. Wenn die Konsolenanwendung HashConfigVb.exe benannt wird, geben Sie die folgende Syntax an der Eingabeaufforderung in den Papierkorb Verzeichnis der Anwendung:
HashConfigVb.exe 24 64
Die Anwendung sollte Ausgabe zurückgegeben werden, die die folgende Ausgabe ähnelt:
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"            decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"            validation="SHA1"/>					
Hinweis: Da der Code ein Zufallszahlengenerators verwendet, unterscheidet die Ausgabe jedes Mal.

Aktualisieren Sie die Konfigurationsdatei

  1. Suchen der Datei Machine.config oder Web.config-Datei.
  2. Suchen Sie in der Konfigurationsdatei des Abschnitts <system.web>.
  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.
Informationsquellen
Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
308157Wie Sie die formularbasierte Authentifizierung in Ihrer ASP.NET-Anwendung implementieren, mithilfe von Visual Basic .NET
306238Wie Sie rollenbasierte Sicherheit bei der formularbasierten Authentifizierung in Ihrer ASP.NET-Anwendung implementieren, mithilfe von Visual Basic .NET
306590INFO: Überblick über die ASP.NET-Sicherheit
307626INFO: ASP.NET-Konfiguration (Übersicht)
Webfarm Ansichtszustand

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 313091 – Letzte Überarbeitung: 10/29/2007 14:53:07 – Revision: 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 KbMtde
Feedback