machinekey

MachineKey چیست و چگونه استفاده می شود؟

بخش MachineKey را می توان در سطح ماشین (Machine.config) یا برنامه (Web.config) پیکربندی کرد که keyها و الگوریتم هایی را که برای windows authetication forms ، اعتبار سنجی view-state و انزوای session-state برنامه استفاده می شود ، کنترل می کند.

در این بخش، نحوه پیکربندی <machineKey> برای کنترل tamper proofing و encryptionء ViewState، فرم های تأیید اعتبار و role cookies را نشان می دهیم. ViewState به طور پیش فرض signed و tamper proof است. با استفاده از ویژگی ViewStateEncryptionMode می توانید برای صفحاتی که حاوی موارد حساس در ViewState آنها هستند، encryption درخواست کنید. فرم های تأیید اعتبار و role cookies به طور پیشفرض signed و encrypted می شوند. شما نیازی به تغییر تنظیمات پیش فرض ندارید ، مگر اینکه برنامه شما در Web farm باشد یا اگر لازم است authentication tickets را در بین برنامه ها به اشتراک بگذارید. در این موارد ، شما باید keyهای encryption و hashing را به صورت دستی generate کنید.

ملاحظات استقرار Web Farm

اگر برنامه خود را در یک Web Farm مستقر می کنید ، باید اطمینان حاصل کنید که configuration fileها در هر سرور دارای مقدار یکسان برای validationKey و decryptionKey هستند که به ترتیب برای hash و decryption استفاده می شوند. این مورد الزامی است زیرا شما نمی توانید تضمین کنید که کدام سرور درخواستهای پی در پی را کنترل می کند.

با مقادیر generated key دستی ، تنظیمات باید مانند مثال زیر باشد.

<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B" decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" validation="SHA1" decryption="AES"
/>

اگر می خواهید برنامه خود را از سایر برنامه های موجود در همان سرور جدا کنید ، فایل Web.config را برای هر برنامه در هر سرور در farm قرار دهید. اطمینان حاصل کنید که از مقادیر key جداگانه برای هر برنامه استفاده می کنید ، اما keyهای هر برنامه را در همه سرورها duplicate کنید.

تنظیم MachineKey با استفاده از IIS Manager

اگر در سرور به کنسول مدیریت IIS دسترسی دارید ، آسانترین راه برای تنظیم MachineKey است.

کنسول مدیریت IIS را اجرا کرده و سپس وب سایت را انتخاب کنید. گزینه MachineKey را باز کنید:

machinekey1

صفحه کنترل MachineKey دارای تنظیمات زیر است:

machinekey2

تیک “Automatically generate at runtime” را برای validation key و decryption key بردارید.

در بخش “Action” در سمت راست پنل روی “Generate Keys” کلیک کنید.

روی “Apply” کلیک کنید.

و در صورت عدم وجود خط زیر ، در تمام webserverها در تگ system.web ، به فایل web.config اضافه کنید.

<machineKey
validationKey="21F0SAMPLEKEY9C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B" decryptionKey="ABAASAMPLEKEY56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" validation="SHA1" decryption="AES"
/>

لطفاً مطمئن شوید که از MachineKey ها و پرونده web.config بک آپ دارید.

2 دیدگاه در “MachineKey چیست و چگونه استفاده می شود؟افزودن → خودتان

    1. 1)Add the Microsoft.AspNetCore.DataProtection NuGet package to your project.

      2)In your Startup.cs file, add the following code to the ConfigureServices method:

      services.AddDataProtection()
      .SetApplicationName("YourApplicationName")
      .PersistKeysToFileSystem(new DirectoryInfo(@"c:\keys\"));

      This code configures data protection for your application and specifies a directory where the keys will be persisted.

      3)To generate a machine key, you can use the MachineKey class as follows:

      string key = MachineKey.Create(32);
      This code generates a 256-bit key.

      4)To encrypt data using the machine key, you can use the Protect method:

      byte[] protectedData = MachineKey.Protect(Encoding.UTF8.GetBytes("Hello, world!"));
      This code encrypts the string "Hello, world!" using the machine key.

      5)To decrypt data using the machine key, you can use the Unprotect method:

      byte[] unprotectedData = MachineKey.Unprotect(protectedData);
      string originalData = Encoding.UTF8.GetString(unprotectedData);

      This code decrypts the encrypted data and converts it back to a string

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *