كيفية إنشاء المفاتيح باستخدام Visual Basic.NET لاستخدامه في مصادقة النماذج

للحصول على إصدار Microsoft Visual C#.NET من هذه المقالة، راجع
312906 .

تشير هذه المقالة إلى مكتبة فئات Microsoft.NET Framework مساحات الأسماء التالية:
  • System.Text
  • System.Security.Cryptography

في هذه المهمة

ملخص

توضح هذه المقالة كيفية إنشاء مفاتيح إلى استخدام التشفير وفك التشفير والتحقق من صحة بيانات ملف تعريف ارتباط مصادقة النماذج. يمكنك استخدام المفاتيح التي تقوم بإنشائها في هذه المقالة ل validationKey وسمات ديكريبتيونكي قسم < machineKey > في العنصر < system. web > في Machine.config وملفات Web.config.

العودة إلى أعلى

متطلبات

توضح القائمة التالية الأجهزة الموصى بها برامج البنية الأساسية للشبكة وحزم الخدمات التي تحتاجها:
  • نظام التشغيل Microsoft Windows 2000 أو Microsoft Windows XP
  • Microsoft.NET Framework
  • خدمات معلومات إنترنت ل Microsoft (IIS)
العودة إلى أعلى

إنشاء مشروع

  1. Microsoft Visual Studio.NET.بدء تشغيل
  2. في القائمة ملف ، أشر إلى جديد، ومن ثم انقر فوق مشروع.
  3. وفي مجال أنواع المشاريع ، انقر فوق مشاريع Visual Basic.
  4. في ناحية القوالب ، انقر فوق تطبيق وحدة التحكم.
  5. في مربع النص الاسم ، اكتب هاشكونفيجفب، ومن ثم انقر فوق موافق.
العودة إلى أعلى

كتابة التعليمات البرمجية لتجزئة كلمة مرور

يقرأ التعليمات البرمجية في هذا المقطع اثنين من الوسائط التي تم تمريرها من سطر الأوامر:
  • الوسيطة الأولى هي عدد وحدات البايت التي يتم استخدامها لإنشاء السمة ديكريبتيونكي .
  • الوسيطة الثانية هي عدد وحدات البايت التي يتم استخدامها لإنشاء سمة validationKey .
تستخدم التعليمة البرمجية إنشاء أرقام عشوائية لإنشاء رقم عشوائي من وحدات البايت استناداً إلى وسيطات سطر الأوامر. بعد أن يتم إنشاء وحدات البايت عشوائية، يتم تنسيق وحدات البايت إلى سلسلة سداسية عشرية غير مناسبة للاستخدام في ملفات.config.

ملاحظة: سلسلة الست عشري الذي يتم إنشاؤه هو ضعف حجم القيمة التي تم تمريرها في سطر الأوامر. على سبيل المثال، إذا حددت 24 بايت لمفتاح، السلسلة الناتجة 48 بايت في طول بعد عملية التحويل. القيم الصالحة لديكريبتيونكي هو 8 أو 24. يؤدي هذا إلى إنشاء مفتاح ذو 16 بايت لمقياس تشفير البيانات (DES) أو مفتاح 48 بايت لثلاثي Triple DES، على التوالي. القيم الصالحة ل validationKey هي 20 و 64. يؤدي هذا إلى إنشاء مفاتيح من 40 إلى 128 بايت في طول بعد عملية التحويل. الإخراج من التعليمات البرمجية هي عنصر كامل < machineKey > يمكنك نسخ ولصق Machine.config أو ملف Web.config.

  1. إضافة ملف فئة جديد يسمى كييكريتور إلى مشروع Visual Basic.
  2. استبدال التعليمات البرمجية الموجودة في الملف KeyCreator.vb باستخدام التعليمات البرمجية التالية:
    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. فتح ملف Module1.vb الذي يتم إنشاؤه بشكل افتراضي، ثم قم بإضافة التعليمات البرمجية التالية في إجراء sub Main :
        Dim MyKeyCreator As New Crypto.KeyCreator()    MyKeyCreator.CreateMachineKey()

  4. إنشاء التطبيق.
العودة إلى أعلى

إنشاء التجزئات

تشغيل التطبيق من موجه الأوامر، ثم ثم تمرير في قيمتين عدد صحيح يتم حجم فك التشفير ومفاتيح التحقق من الصحة. إذا قمت بتسميته تطبيق وحدة التحكم HashConfigVb.exe، اكتب بناء الجملة التالي في موجه الأوامر في دليل Bin للتطبيق:
HashConfigVb.exe 24 64
يجب إرجاع التطبيق إخراج مشابه للإخراج التالي:
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"
decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"
validation="SHA1"/>

ملاحظة: لأن التعليمات البرمجية تستخدم منشئ أرقام عشوائية، الإخراج يختلف كل مرة.

العودة إلى أعلى

تحديث ملف التكوين

  1. حدد موقع ملف Web.config أو Machine.config.
  2. حدد موقع المقطع < system. web > في ملف التكوين.
  3. استبدال مقطع < machineKey > بالإخراج من تطبيق وحدة التحكم. في حالة عدم وجود قسم < machineKey >، بإنشائه.
  4. حفظ ملف التكوين.
  5. إعادة تشغيل IIS على كافة الخوادم في المزرعة ويب Machine.config حتى تسري التغييرات.
العودة إلى أعلى

استكشاف الأخطاء وإصلاحها

تأكد من وجود مفاتيح متماثلة، وصريحة في قسم < machineKey > (، لا تستخدم الخيار الإنشاء التلقائي للسمات في قسم < machineKey >) عبر تكتل ويب في السيناريوهات التالية:
  • عند استخدام مصادقة النماذج.
  • عند تشغيل حالة جلسة العمل في وضع StateServer.
  • متى تريد حالة العرض يكون متاحاً عبر تكتل ويب ليتم تعيين السمة انابليفيوستاتيماك إلى True بشكل افتراضي.
العودة إلى أعلى

المراجع

للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

كيفية تنفيذ مصادقة مستندة إلى النماذج في تطبيق ASP.NET الخاص بك باستخدام Visual Basic.NET 308157

كيفية تطبيق الأمان المستند إلى الدور باستخدام المصادقة المستندة إلى النماذج في تطبيق ASP.NET الخاص بك باستخدام Visual Basic.NET 306238

معلومات 306590 : نظرة عامة حول أمان ASP.NET

معلومات 307626 : نظرة عامة حول تكوين ASP.NET

العودة إلى أعلى
خصائص

رقم الموضوع: 313091 - آخر مراجعة: 18‏/01‏/2017 - المراجعة: 1

تعليقات