Jak vytvořit klíče pomocí jazyka Visual Basic .NET pro použití při ověřování pomocí formulářů

Microsoft Visual C# .NET verzi tohoto článku naleznete v tématu
312906 .

Tento článek se týká následujících oborů názvů knihovny tříd rozhraní.NET Framework společnosti Microsoft:
  • System.Text
  • System.Security.Cryptography

V TOMTO ÚKOLU

Souhrn

Tento článek popisuje postup vytvoření klíče pro šifrování, dešifrování a ověření dat souboru cookie ověřování formulářů. Můžete použít klíče, které vytvoříte v tomto článku validationKey a decryptionKey atributy v elementu < system.web > v souboru Machine.config a soubory Web.config v části < machineKey >.

zpět na horní

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které potřebujete:
  • Microsoft Windows 2000 nebo Microsoft Windows XP
  • Microsoft rozhraní.NET Framework
  • Internetová informační služba (IIS)
zpět na horní

Vytvoření projektu

  1. Spusťte aplikaci Visual Studio .NET.
  2. V nabídce soubor přejděte na příkaz Novýa klepněte na příkaz projekt.
  3. Ve skupinovém rámečku Typy projektů klepněte na položku Projekty jazyka Visual Basic.
  4. V části šablony klepněte na Aplikace konzoly.
  5. Do pole název zadejte HashConfigVba potom klepněte na tlačítko OK.
zpět na horní

Zápis kódu hash hesla

Kód v této části se nahrazuje dva argumenty, které jsou předávány z příkazového řádku:
  • První argument je počet bajtů, který slouží k vytvoření atributu decryptionKey .
  • Druhý argument je počet bajtů, který slouží k vytvoření validationKey atribut.
Kód používá k vytvoření náhodný počet bajtů, které jsou založeny na argumenty příkazového řádku Generátor pseudonáhodných čísel. Po vytvoření náhodných bajtů bajtů zformátovány do šestnáctkového řetězce, který je vhodný pro použití v .config soubory.

Poznámka: Šestnáctkový řetězec, který je vytvořen je dvakrát velikost hodnoty, který je předán do příkazového řádku. Pokud zadáte 24 bajtů pro klíč, výsledný řetězec je v délce 48 bajtů po převodu. Platné hodnoty pro decryptionKey je 8 nebo 24. To vytvoří 16bajtový klíč pro šifrování Standard DES (Data) nebo 48 bajtů klíč pro Triple DES, respektive. Platné hodnoty validationKey jsou 20 až 64. To vytvoří klíče z 40 do délky 128 bajtů po převodu. Výstup z kódu je celý < machineKey > element, který můžete zkopírovat a vložit souboru Machine.config nebo Web.config souboru.

  1. Přidáte nový soubor třídy do projektu Visual Basic s názvem KeyCreator.
  2. Nahraďte existující kód v souboru KeyCreator.vb následující kód:
    Imports SystemImports System.Text
    Imports System.Security.Cryptography

    Namespace 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 Class
    End Namespace

  3. Otevřete soubor Module1.vb, která je vytvořena ve výchozím nastavení a pak přidejte následující kód v rutině sub Main :
        Dim MyKeyCreator As New Crypto.KeyCreator()    MyKeyCreator.CreateMachineKey()

  4. Sestavte aplikaci.
zpět na horní

Generovat hodnoty hash

Spuštění aplikace z příkazového řádku a poté předat ve dvou celočíselných hodnot, které jsou velikost dešifrování a ověření klíče. Pokud je název aplikace konzoly HashConfigVb.exe, zadejte na příkazovém řádku v adresáři Bin aplikace následující syntaxi:
HashConfigVb.exe 24 64
Aplikace by měla vrátit výstup, který je podobný následující výstup:
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"
decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"
validation="SHA1"/>

Poznámka: Vzhledem k tomu, že kód používá Generátor pseudonáhodných čísel, výstup je jiný pokaždé, když.

zpět na horní

Aktualizace konfiguračního souboru

  1. Vyhledejte souboru Machine.config nebo souboru Web.config.
  2. Přejděte do oddílu < system.web > v konfiguračním souboru.
  3. Nahraďte oddíl < machineKey > výstup z aplikace konzoly. Pokud oddíl < machineKey > neexistuje, vytvořte ji.
  4. Uložte konfigurační soubor.
  5. Restartujte službu IIS na všech serverech webové farmy Machine.config změny se projeví.
zpět na horní

Poradce při potížích

Ujistěte se, že oddíl < machineKey > identické, explicitní klíče (tj, nepoužívejte možnost automaticky generovat atributy v oddílu < machineKey >) přes webové serverové farmy v následujících situacích:
  • Při použití ověřování pomocí formulářů.
  • Při spuštění stavu relace v režimu StateServer.
  • Kdy má být stav zobrazení je k dispozici v rámci webové serverové farmy, protože atribut enableViewStateMAC je nastavena na True ve výchozím nastavení.
zpět na horní

Odkazy

Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

308157 jak implementovat ověřování na základě formulářů ve vaší aplikaci technologie ASP.NET pomocí Visual Basic .NET

306238 jak implementovat zabezpečení založené na rolích pomocí ověřování na základě formulářů ve vaší aplikaci technologie ASP.NET pomocí Visual Basic .NET

306590 INFO: Přehled zabezpečení technologie ASP.NET

307626 informace: Přehled konfigurace technologie ASP.NET

zpět na horní
Vlastnosti

ID článku: 313091 - Poslední kontrola: 20. 1. 2017 - Revize: 1

Váš názor