إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ابدأ باستخدام مكتبة عميل شهادة Azure Key Vault ل .NET. Azure Key Vault هي خدمة سحابية توفر مخزنا آمنا للشهادات. يمكنك تخزين المفاتيح وكلمات المرور والشهادات والأسرار الأخرى بأمان. يمكن إنشاء مخازن مفاتيح Azure وإدارتها من خلال مدخل Microsoft Azure. في هذا التشغيل السريع، تتعلم كيفية إنشاء الشهادات واستردادها وحذفها من مخزن مفاتيح Azure باستخدام مكتبة عميل .NET.
موارد مكتبة عميل Key Vault:
الوثائق المرجعية لواجهة | برمجة التطبيقاتكود | الباقة (NuGet)
لمزيد من المعلومات حول Key Vault والشهادات، راجع:
Prerequisites
- اشتراك Azure - أنشئ اشتراكاً مجاناً
- .NET 6 SDK أو أحدث
- Azure CLI
- Key Vault - يمكنك إنشاء واحد باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell.
يتم استخدام dotnet هذا التشغيل السريع و Azure CLI.
Setup
تستخدم هذه البداية السريعة مكتبة Azure Identity مع Azure CLI لمصادقة المستخدم على خدمات Azure. يمكن للمطورين أيضا استخدام Visual Studio أو Visual Studio Code لمصادقة مكالماتهم، لمزيد من المعلومات، راجع مصادقة العميل باستخدام مكتبة عميل Azure Identity.
تسجيل الدخول إلى Azure
تشغيل الأمر
login.az loginفي حال كان CLI يمكن فتح المستعرض الافتراضي الخاص بك، فإنه سيتم القيام بذلك وتحميل صفحة تسجيل الدخول Azure.
بخلاف ذلك، افتح صفحة متصفح على https://aka.ms/devicelogin وأدخل رمز التفويض المعروض في جهازك.
سجل الدخول باستخدام بيانات اعتماد حسابك في المتصفح.
منح حق الوصول إلى مخزن المفاتيح الخاص بك
للحصول على أذونات إلى مخزن المفاتيح الخاص بك من خلال التحكم في الوصول المستند إلى الدور (RBAC)، قم بتعيين دور إلى "اسم المستخدم الأساسي" (UPN) باستخدام الأمر Azure CLI az role assignment create.
az role assignment create --role "Key Vault Certificates Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
استبدل <upn>، <subscription-id>، <resource-group-name> و <your-unique-keyvault-name> بقيمك الفعلية. سيكون UPN الخاص بك عادة بتنسيق عنوان بريد إلكتروني (على سبيل المثال، username@domain.com).
إنشاء تطبيق وحدة تحكم .NET جديد
في غلاف الأوامر، قم بتشغيل الأمر التالي لإنشاء مشروع باسم
key-vault-console-app:dotnet new console --name key-vault-console-appقم بالتغيير إلى دليل key-vault-console-app الذي تم إنشاؤه حديثا، وقم بتشغيل الأمر التالي لإنشاء المشروع:
dotnet buildيجب ألا يحتوي إخراج البناء على تحذيرات أو أخطاء.
Build succeeded. 0 Warning(s) 0 Error(s)
قم بتثبيت الحِزَم
من غلاف الأوامر، قم بتثبيت مكتبة عميل شهادة Azure Key Vault ل .NET:
dotnet add package Azure.Security.KeyVault.Certificates
لهذا التشغيل السريع، ستحتاج أيضا إلى تثبيت مكتبة عميل Azure Identity:
dotnet add package Azure.Identity
تعيين متغيرات البيئة
يحصل التطبيق على اسم مخزن المفاتيح من متغير بيئة يسمى KEY_VAULT_NAME.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS أو Linux
export KEY_VAULT_NAME=<your-key-vault-name>
نموذج الكائن
تتيح لك مكتبة عميل شهادة Azure Key Vault ل .NET إدارة الشهادات. يوضح قسم أمثلة التعليمات البرمجية كيفية إنشاء عميل وتعيين شهادة واسترداد شهادة وحذف شهادة.
أمثلة على التعليمات البرمجية
إضافة التوجيهات
أضف التوجيهات التالية إلى أعلى Program.cs:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Certificates;
مصادقة عميل وإنشائه
يجب تفويض طلبات التطبيق لمعظم خدمات Azure. يعد استخدام فئة DefaultAzureCredential التي توفرها مكتبة عميل Azure Identity هو النهج الموصى به لتنفيذ الاتصالات بدون كلمة مرور بخدمات Azure في التعليمات البرمجية الخاصة بك.
DefaultAzureCredential يدعم طرق المصادقة المتعددة ويحدد الطريقة التي يجب استخدامها في وقت التشغيل. يمكن هذا الأسلوب تطبيقك من استخدام طرق مصادقة مختلفة في بيئات مختلفة (محلية مقابل إنتاج) دون تنفيذ تعليمات برمجية خاصة بالبيئة.
في هذا التشغيل السريع، DefaultAzureCredential تتم المصادقة على مخزن المفاتيح باستخدام بيانات اعتماد مستخدم التطوير المحلي الذي قام بتسجيل الدخول إلى Azure CLI. عند نشر التطبيق في Azure، يمكن لنفس DefaultAzureCredential التعليمات البرمجية اكتشاف واستخدام هوية مدارة تم تعيينها إلى App Service أو الجهاز الظاهري أو خدمات أخرى تلقائيا. لمزيد من المعلومات، راجع نظرة عامة على الهوية المدارة.
في هذا المثال، يتم توسيع اسم مخزن المفاتيح الخاص بك إلى عنوان URI لمخزن المفاتيح، بالتنسيق https://<your-key-vault-name>.vault.azure.net. لمزيد من المعلومات حول المصادقة على مخزن المفاتيح، راجع دليل المطور.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential());
حفظ شهادة
في هذا المثال، من أجل البساطة، يمكنك استخدام شهادة موقعة ذاتيا مع نهج الإصدار الافتراضي. لهذه المهمة، استخدم الأسلوب StartCreateCertificateAsync . تقبل معلمات الطريقة اسم الشهادة ونهج الشهادة.
var operation = await client.StartCreateCertificateAsync("myCertificate", CertificatePolicy.Default);
var certificate = await operation.WaitForCompletionAsync();
Note
في حالة وجود اسم الشهادة، سيؤدي الرمز أعلاه إلى إنشاء إصدار جديد من تلك الشهادة.
استرداد شهادة
يمكنك الآن استرداد الشهادة التي تم إنشاؤها مسبقا باستخدام الأسلوب GetCertificateAsync .
var certificate = await client.GetCertificateAsync("myCertificate");
حذف شهادة
أخيرا، دعنا نحذف الشهادة ونزيلها من مخزن المفاتيح باستخدام الأساليب StartDeleteCertificateAsyncوPurgeDeletedCertificateAsync .
var operation = await client.StartDeleteCertificateAsync("myCertificate");
// You only need to wait for completion if you want to purge or recover the certificate.
await operation.WaitForCompletionAsync();
var certificate = operation.Value;
await client.PurgeDeletedCertificateAsync("myCertificate");
التعليمة البرمجية العينة
قم بتعديل تطبيق وحدة تحكم .NET للتفاعل مع Key Vault عن طريق إكمال الخطوات التالية:
استبدل الكود في Program.cs بالرمز التالي:
using System; using System.Threading.Tasks; using Azure.Identity; using Azure.Security.KeyVault.Certificates; namespace key_vault_console_app { class Program { static async Task Main(string[] args) { const string certificateName = "myCertificate"; var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME"); var kvUri = $"https://{keyVaultName}.vault.azure.net"; var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential()); Console.Write($"Creating a certificate in {keyVaultName} called '{certificateName}' ..."); CertificateOperation operation = await client.StartCreateCertificateAsync(certificateName, CertificatePolicy.Default); await operation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.WriteLine($"Retrieving your certificate from {keyVaultName}."); var certificate = await client.GetCertificateAsync(certificateName); Console.WriteLine($"Your certificate version is '{certificate.Value.Properties.Version}'."); Console.Write($"Deleting your certificate from {keyVaultName} ..."); DeleteCertificateOperation deleteOperation = await client.StartDeleteCertificateAsync(certificateName); // You only need to wait for completion if you want to purge or recover the certificate. await deleteOperation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.Write($"Purging your certificate from {keyVaultName} ..."); await client.PurgeDeletedCertificateAsync(certificateName); Console.WriteLine(" done."); } } }
الاختبار والتحقق
تنفيذ الأمر التالي لإنشاء المشروع
dotnet build
يظهر شكل مختلف من الإخراج التالي:
Creating a certificate in mykeyvault called 'myCertificate' ... done.
Retrieving your certificate from mykeyvault.
Your certificate version is '8532359bced24e4bb2525f2d2050738a'.
Deleting your certificate from mykeyvault ... done
Purging your certificate from mykeyvault ... done
الخطوات التالية
في هذا التشغيل السريع، قمت بإنشاء مخزن مفاتيح وتخزين شهادة واسترداد تلك الشهادة.
لمعرفة المزيد حول Key Vault وكيفية دمجه مع تطبيقاتك، راجع المقالات التالية: