В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Создание разделов с помощью Visual Basic .NET для использования проверки подлинности в формах

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:313091
Версия данной статьи для Microsoft Visual C# .NET:312906.

Данная статья ссылается на следующие пространства имен библиотеки классов Microsoft .NET Framework::
  • System.Text
  • System.Security.Cryptography

Содержание

Аннотация
В данной статье описывается создание ключей для шифрования, расшифровки и проверки данных cookie проверки подлинности форм. Можно использовать ключи, создаваемые в этой статьеvalidationKeyиdecryptionKeyатрибуты <machinekey>в разделе</machinekey><system.web></system.web>элемент в Machine.config и Web.config файлов.

Требования

В приведенном ниже списке перечислены требования к оборудованию, сети, программному обеспечению и пакетам обновления.:
  • Microsoft Windows 2000 или Microsoft Windows XP
  • Microsoft .NET Framework
  • Службы IIS

Создание проекта

  1. Запустите Microsoft Visual Studio .NET..
  2. НаФайл:Выберите пункт менюСОЗДАТЬ.и выберите командуProject.
  3. В диалоговом окнеТипы проектовобласть, нажмите кнопкуПроекты Visual Basic.
  4. В диалоговом окнеШаблоны:область, нажмите кнопкуПриложение консоли.
  5. В диалоговом окнеИМЯтекстовое поле, типHashConfigVbи выберите командуOk..

Написать код для хэширования паролей

Код в этом разделе указывается двух аргументов, переданных из командной строки:
  • Первым аргументом является число байтов, который используется для созданияdecryptionKeyattribute:.
  • Вторым аргументом является число байтов, который используется для созданияvalidationKeyattribute:.
Код использует генератор случайных чисел для создания случайного числа байтов, в зависимости от аргументов командной строки. После создания случайных байтов байты будут отформатированы в шестнадцатеричную строку, которая подходит для использования в файлах конфигурации.

Примечание.Шестнадцатеричную строку, которая создается — два раза размер значения, переданного в командной строке. Например если указать 24 байта, ключ, результирующая строка будет 48 байт после преобразования. Допустимые значенияdecryptionKey— 8 или 24. Это создает 16-разрядный ключ для шифрования данных стандарт DES или 48 байтов ключа для Triple DES, соответственно. АтрибутvalidationKeyпредставляют собой 20-64. Это создает ключи от 40 до 128 байт после преобразования. Результат выполнения кода — это всего<machinekey></machinekey>элемент, который можно скопировать и вставить в файл Web.config или Machine.config.

  1. Добавьте новый файл класса с именем KeyCreator в проект Visual Basic.
  2. Замените существующий код в файле KeyCreator.vb следующий код:
    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. Откройте модуль Module1.VB файл, создаваемый по умолчанию, а затем добавьте следующий код вОсновной номер:процедуры Sub.
        Dim MyKeyCreator As New Crypto.KeyCreator()    MyKeyCreator.CreateMachineKey()					
  4. Постройте приложение.

Создает хеш-кодов

Запустите приложение из командной строки и затем передать в двух целочисленных значений, которые размер расшифровки и проверки ключей. Если имя консольного приложения HashConfigVb.exe, введите следующий синтаксис командной строки в ячейку каталога приложения.
HashConfigVb.exe 24-64
Приложения должны возвращать выходные данные, похожее на следующее:
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"            decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"            validation="SHA1"/>					
Примечание.Поскольку код использует генератор случайных чисел, результат отличается каждый раз.

Обновление файла конфигурации

  1. Найдите Machine.config или Web.config файла.
  2. Выберите <system.web>раздел в файле конфигурации.</system.web>
  3. Замените раздел <machinekey>Выход из консольного приложения. Если <machinekey>раздел не существует, создайте его.</machinekey></machinekey>
  4. Сохраните файл конфигурации.
  5. На всех серверах в веб-ферме Machine.config чтобы изменения вступили в силу, перезапустите IIS.

ПОИСК И УСТРАНЕНИЕ НЕПОЛАДОК

Убедитесь, что <machinekey>раздел имеет ключи идентичны, явно (то есть, не используйте</machinekey>AutoGenerateпараметр для атрибутов в <machinekey>раздел) через веб-ферме в следующих случаях:</machinekey>
  • При использовании проверки подлинности форм.
  • При выполнении состояние сеанса в режиме StateServer.
  • При необходимости ViewState доступен через веб-узел фермы, посколькуenableViewStateMACатрибут имеет значениеTrueПо умолчанию.
Ссылки
Дополнительные сведения см. в следующих статьях базы знаний Майкрософт::
308157Выполнение проверки подлинности на основе форм в приложениях ASP.NET с помощью Microsoft Visual Basic .NET
306238Как реализовать ролевой безопасности с проверкой подлинности на основе форм в приложении ASP.NET с помощью Visual Basic .NET
306590ИНФОРМАЦИЯ: Общие сведения о безопасности ASP.NET
307626ИНФОРМАЦИЯ: Общие сведения о конфигурации ASP.NET
состояние представления webfarm

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 313091 — последний просмотр: 11/23/2010 05:25:00 — редакция: 2.0

Microsoft ASP.NET 1.0, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft ASP.NET 1.1, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbproductlink kbconfig kbhowtomaster kbsecurity kbstate kbmt KB313091 KbMtru
Отзывы и предложения
/html>