بخش 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 را باز کنید:
صفحه کنترل MachineKey دارای تنظیمات زیر است:
تیک “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 بک آپ دارید.
“I’m a self-motivated and curious person with a weapon named “search
سلام
خسته نباشید
از machine key در دات نت کور 3.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