إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
Azure Key Vault هي خدمة تسمح لك بتشفير مفاتيح المصادقة ومفاتيح حساب التخزين ومفاتيح تشفير البيانات وملفات .pfx وكلمات المرور باستخدام المفاتيح المؤمنة. إذا كنت ترغب في معرفة المزيد عن Azure Key Vault، فقد تحتاج إلى مراجعة: ما هو Azure Key Vault؟
Azure Key Vault Managed HSM هي خدمة سحابية مدارة بالكامل ومتاحة بشكل كبير ومستأجر واحد ومتوافقة مع المعايير تمكنك من حماية مفاتيح التشفير لتطبيقاتك السحابية باستخدام وحدات HSM التي تم التحقق من صحتها من FIPS 140-2 المستوى 3. إذا كنت ترغب في معرفة المزيد حول Azure Key Vault Managed HSM، فقد تحتاج إلى مراجعة: ما هو HSM المدار من Azure Key Vault؟
يدعم عميل مكتبة مفاتيح Azure Key Vault مفاتيح RSA ومفاتيح منحنى القطع الناقص (EC) بالإضافة إلى المفاتيح المتماثلة (أكتوبر) عند التشغيل مقابل HSM مدار، ولكل منها دعم مقابل في وحدات أمان الأجهزة (HSM). وهو يوفر عمليات لإنشاء المفاتيح وإصداراتها واستردادها وتحديثها وحذفها وحذفها والنسخ الاحتياطي والاستعادة وإدراجها.
استخدم مكتبة العميل لمفاتيح Azure Key Vault في تطبيق Node.js الخاص بك من أجل:
- إنشاء مفاتيح باستخدام منحنى القطع الناقص أو تشفير RSA، مدعوما اختياريا بوحدات أمان الأجهزة (HSM).
- مفاتيح الاستيراد والحذف والتحديث.
- احصل على مفتاح واحد أو أكثر والمفاتيح المحذوفة، باستخدام سماتها.
- استرداد مفتاح محذوف واستعادة مفتاح تم نسخه احتياطيا.
- احصل على إصدارات المفتاح.
باستخدام عميل التشفير المتوفر في هذه المكتبة، يمكنك أيضا الوصول إلى:
- تشفير
- فك تشفير
- التوقيع
- التحقق
- مفاتيح الالتفاف
- فك المفاتيح
ملاحظة: لا يمكن استخدام هذه الحزمة في المستعرض بسبب قيود خدمة Azure Key Vault، يرجى الرجوع إلى هذا المستند للحصول على إرشادات.
الارتباطات الرئيسية:
- التعليمات البرمجية المصدر
- الحزمة (npm)
- الوثائق المرجعية لواجهة برمجة التطبيقات
- وثائق
Product - عينات
الشروع في العمل
البيئات المدعومة حاليا
المتطلبات الأساسية
- اشتراك Azure
- Azure Key Vault موجود . إذا كنت بحاجة إلى إنشاء مخزن مفاتيح، يمكنك القيام بذلك في مدخل Microsoft Azure باتباع الخطوات الواردة في هذا المستند. بدلا من ذلك، استخدم Azure CLI باتباع هذه الخطوات.
- إذا كنت تستخدم HSM المدار، Azure Key Vault Managed HSM. إذا كنت بحاجة إلى إنشاء HSM مدار، يمكنك القيام بذلك باستخدام Azure CLI باتباع الخطوات الواردة في هذا المستند.
تثبيت الحزمة
تثبيت مكتبة عميل Azure Key Vault Key باستخدام npm
npm install @azure/keyvault-keys
تثبيت مكتبة الهوية
يصادق عملاء Azure Key Vault باستخدام مكتبة هوية Azure. قم بتثبيته أيضا باستخدام npm
npm install @azure/identity
تكوين TypeScript
يحتاج مستخدمو TypeScript إلى تثبيت تعريفات نوع العقدة:
npm install @types/node
تحتاج أيضا إلى تمكين compilerOptions.allowSyntheticDefaultImports في tsconfig.json. لاحظ أنه إذا قمت بتمكين compilerOptions.esModuleInterop، يتم تمكين allowSyntheticDefaultImports بشكل افتراضي. راجع دليل خيارات المحول البرمجي TypeScript للحصول على مزيد من المعلومات.
المفَاهِيم الرئِيسِية
- عميل Key هو الواجهة الأساسية للتفاعل مع أساليب واجهة برمجة التطبيقات المتعلقة بالمفاتيح في Azure Key Vault API من تطبيق JavaScript. بمجرد تهيئته، فإنه يوفر مجموعة أساسية من الأساليب التي يمكن استخدامها لإنشاء المفاتيح وقراءتها وتحديثها وحذفها.
- إصدار Key هو إصدار من مفتاح في Key Vault. في كل مرة يعين فيها مستخدم قيمة لاسم مفتاح فريد، يتم إنشاء إصدار جديد من هذا المفتاح. سيؤدي استرداد مفتاح باسم دائما إلى إرجاع أحدث قيمة تم تعيينها، ما لم يتم توفير إصدار معين للاستعلام.
- يسمح الحذف المبدئي ل Key Vaults بدعم الحذف والإزالة كخطوتين منفصلتين، لذلك لا يتم فقدان المفاتيح المحذوفة على الفور. يحدث هذا فقط إذا قام Key Vault تمكين الحذف المبدئي.
- يمكن إنشاء النسخ الاحتياطي لمفتاح من أي مفتاح تم إنشاؤه. تأتي هذه النسخ الاحتياطية كبيانات ثنائية، ويمكن استخدامها فقط لإعادة إنشاء مفتاح تم حذفه مسبقا.
- عميل التشفير هو واجهة منفصلة تتفاعل مع أساليب واجهة برمجة التطبيقات للمفاتيح في واجهة برمجة تطبيقات Key Vault. يركز هذا العميل فقط في عمليات التشفير التي يمكن تنفيذها باستخدام مفتاح تم إنشاؤه بالفعل في Key Vault. المزيد حول هذا العميل في قسم التشفير.
المصادقة باستخدام Azure Active Directory
تعتمد خدمة Key Vault على Azure Active Directory لمصادقة الطلبات على واجهات برمجة التطبيقات الخاصة بها. توفر حزمة @azure/identity مجموعة متنوعة من أنواع بيانات الاعتماد التي يمكن للتطبيق الخاص بك استخدامها للقيام بذلك. يوفر README ل @azure/identity المزيد من التفاصيل والعينات لمساعدتك على البدء.
للتفاعل مع خدمة Azure Key Vault، ستحتاج إلى إنشاء مثيل لفئة KeyClient، عنوان url لمخزن، وعنصر بيانات اعتماد. تستخدم الأمثلة الموضحة في هذا المستند كائن بيانات اعتماد يسمى DefaultAzureCredential، وهو مناسب لمعظم السيناريوهات، بما في ذلك بيئات التطوير والإنتاج المحلية. بالإضافة إلى ذلك، نوصي باستخدام هوية مدارة للمصادقة في بيئات الإنتاج.
يمكنك العثور على مزيد من المعلومات حول الطرق المختلفة للمصادقة وأنواع بيانات الاعتماد المقابلة لها في وثائق Azure Identity.
فيما يلي مثال سريع. أولا، استيراد DefaultAzureCredentialKeyClient. بمجرد استيرادها، يمكننا الاتصال بخدمة Key Vault بعد ذلك:
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
// Build the URL to reach your key vault
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`; // or `https://${vaultName}.managedhsm.azure.net` for managed HSM.
// Lastly, create our keys client and connect to the service
const client = new KeyClient(url, credential);
تحديد إصدار واجهة برمجة تطبيقات خدمة Azure Key Vault
بشكل افتراضي، تستخدم هذه الحزمة أحدث إصدار من خدمة Azure Key Vault الذي 7.2. يمكنك تغيير إصدار الخدمة المستخدم عن طريق تعيين الخيار serviceVersion في منشئ العميل كما هو موضح أدناه:
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
// Build the URL to reach your key vault
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`; // or `https://${vaultName}.managedhsm.azure.net` for managed HSM.
// Change the Azure Key Vault service API version being used via the `serviceVersion` option
const client = new KeyClient(url, credential, {
serviceVersion: "7.0", // Or 7.1
});
أمثلة
توفر الأقسام التالية أجزاء التعليمات البرمجية التي تغطي بعض المهام الشائعة باستخدام مفاتيح Azure Key Vault. تتكون السيناريوهات التي يتم تناولها هنا من:
- إنشاء مفتاح.
- الحصول على مفتاح.
- إنشاء المفاتيح وتحديثها باستخدام السمات.
- حذف مفتاح.
- تكرار قوائم المفاتيح.
إنشاء مفتاح
createKey بإنشاء مفتاح ليتم تخزينه في Azure Key Vault. إذا كان هناك مفتاح بنفس الاسم موجود بالفعل، إنشاء إصدار جديد من المفتاح.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
const result = await client.createKey(keyName, "RSA");
console.log("result: ", result);
المعلمة الثانية المرسلة إلى createKey هي نوع المفتاح. يعتمد نوع المفاتيح المدعومة على SKU وما إذا كنت تستخدم Azure Key Vault أو Azure Managed HSM. للحصول على قائمة up-to-تاريخ أنواع المفاتيح المدعومة، يرجى الرجوع إلى حول المفاتيح
الحصول على مفتاح
أبسط طريقة لقراءة المفاتيح مرة أخرى من المخزن هي الحصول على مفتاح بالاسم. سيؤدي ذلك إلى استرداد أحدث إصدار من المفتاح. يمكنك اختياريا الحصول على إصدار مختلف من المفتاح إذا قمت بتحديده كجزء من المعلمات الاختيارية.
يسترد getKey مخازن المفاتيح السابقة في Key Vault.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
const latestKey = await client.getKey(keyName);
console.log(`Latest version of the key ${keyName}: `, latestKey);
const specificKey = await client.getKey(keyName, { version: latestKey.properties.version! });
console.log(`The key ${keyName} at the version ${latestKey.properties.version!}: `, specificKey);
إنشاء المفاتيح وتحديثها باستخدام السمات
يمكن أيضا تعيين السمات التالية إلى أي مفتاح في Key Vault:
-
tags: أي مجموعة من قيم المفاتيح التي يمكن استخدامها للبحث عن المفاتيح وتصفيتها. -
keyOps: صفيف العمليات التي سيتمكن هذا المفتاح من تنفيذها (encrypt،decrypt،sign،verify،wrapKey،unwrapKey). -
enabled: قيمة منطقية تحدد ما إذا كان يمكن قراءة قيمة المفتاح أم لا. -
notBefore: تاريخ معين يمكن بعده استرداد قيمة المفتاح. -
expires: تاريخ معين لا يمكن بعده استرداد قيمة المفتاح.
يمكن إرسال كائن بهذه السمات كمعلمة ثالثة createKey، مباشرة بعد اسم المفتاح وقيمته، كما يلي:
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
const result = await client.createKey(keyName, "RSA", {
enabled: false,
});
console.log("result: ", result);
سيؤدي هذا إلى إنشاء إصدار جديد من نفس المفتاح، والذي سيكون له أحدث السمات المتوفرة.
يمكن أيضا تحديث السمات إلى إصدار مفتاح موجود مع updateKeyProperties، كما يلي:
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
const result = await client.createKey(keyName, "RSA");
await client.updateKeyProperties(keyName, result.properties.version, {
enabled: false,
});
حذف مفتاح
يبدأ أسلوب beginDeleteKey في حذف مفتاح.
ستحدث هذه العملية في الخلفية بمجرد توفر الموارد الضرورية.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
const poller = await client.beginDeleteKey(keyName);
await poller.pollUntilDone();
إذا تم تمكين الحذف المبدئي ل Key Vault، فستسمي هذه العملية المفتاح فقط كمفتاح محذوف. لا يمكن تحديث مفتاح محذوف. يمكن قراءتها أو استردادها أو إزالتها فقط.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
const poller = await client.beginDeleteKey(keyName);
// You can use the deleted key immediately:
const deletedKey = poller.getResult();
// The key is being deleted. Only wait for it if you want to restore it or purge it.
await poller.pollUntilDone();
// You can also get the deleted key this way:
await client.getDeletedKey(keyName);
// Deleted keys can also be recovered or purged:
// recoverDeletedKey also returns a poller, just like beginDeleteKey.
const recoverPoller = await client.beginRecoverDeletedKey(keyName);
await recoverPoller.pollUntilDone();
// And here is how to purge a deleted key
await client.purgeDeletedKey(keyName);
نظرا لأن المفاتيح تستغرق بعض الوقت لحذفها بالكامل، beginDeleteKey بإرجاع كائن Poller الذي يتعقب عملية التشغيل الطويل الأساسية وفقا لإرشاداتنا: https://azure.github.io/azure-sdk/typescript_design.html#ts-lro
سيسمح لك الاستقصاء المستلم بالحصول على المفتاح المحذوف عن طريق استدعاء إلى poller.getResult().
يمكنك أيضا الانتظار حتى ينتهي الحذف إما عن طريق تشغيل استدعاءات الخدمة الفردية حتى يتم حذف المفتاح، أو بالانتظار حتى تنتهي العملية:
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
const poller = await client.beginDeleteKey(keyName);
// You can use the deleted key immediately:
let deletedKey = poller.getResult();
// Or you can wait until the key finishes being deleted:
deletedKey = await poller.pollUntilDone();
console.log(deletedKey);
هناك طريقة أخرى للانتظار حتى يتم حذف المفتاح بالكامل وهي إجراء مكالمات فردية، كما يلي:
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
const poller = await client.beginDeleteKey(keyName);
while (!poller.isDone()) {
await poller.poll();
await delay(5000);
}
console.log(`The key ${keyName} is fully deleted`);
تكوين التدوير التلقائي للمفتاح
باستخدام KeyClient، يمكنك تكوين تدوير المفتاح التلقائي لمفتاح عن طريق تحديد نهج الاستدارة. بالإضافة إلى ذلك، يوفر KeyClient طريقة لتدوير مفتاح عند الطلب عن طريق إنشاء إصدار جديد من المفتاح المحدد.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
// Set the key's automated rotation policy to rotate the key 30 days before expiry.
const policy = await client.updateKeyRotationPolicy(keyName, {
lifetimeActions: [
{
action: "Rotate",
timeBeforeExpiry: "P30D",
},
],
// You may also specify the duration after which any newly rotated key will expire.
// In this case, any new key versions will expire after 90 days.
expiresIn: "P90D",
});
// You can get the current key rotation policy of a given key by calling the getKeyRotationPolicy method.
const currentPolicy = await client.getKeyRotationPolicy(keyName);
// Finally, you can rotate a key on-demand by creating a new version of the given key.
const rotatedKey = await client.rotateKey(keyName);
تكرار قوائم المفاتيح
باستخدام KeyClient، يمكنك استرداد وتكرار جميع المفاتيح في Azure Key Vault، وكذلك من خلال جميع المفاتيح المحذوفة وإصدارات مفتاح معين. تتوفر أساليب واجهة برمجة التطبيقات التالية:
- سيقوم
listPropertiesOfKeysبإدراج جميع المفاتيح غير المحذوفة حسب أسمائهم، فقط في أحدث إصداراتها. - سيقوم
listDeletedKeysبإدراج جميع المفاتيح المحذوفة حسب أسمائهم، فقط في أحدث إصداراتها. - سيسرد
listPropertiesOfKeyVersionsجميع إصدارات المفتاح استنادا إلى اسم المفتاح.
والتي يمكن استخدامها على النحو التالي:
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
for await (const keyProperties of client.listPropertiesOfKeys()) {
console.log("Key properties: ", keyProperties);
}
for await (const deletedKey of client.listDeletedKeys()) {
console.log("Deleted: ", deletedKey);
}
for await (const versionProperties of client.listPropertiesOfKeyVersions(keyName)) {
console.log("Version properties: ", versionProperties);
}
سترجع جميع هذه الأساليب جميع النتائج المتاحة في وقت واحد. لاستردادها حسب الصفحات، أضف .byPage() مباشرة بعد استدعاء أسلوب API الذي تريد استخدامه، كما يلي:
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const keyName = "MyKeyName";
for await (const page of client.listPropertiesOfKeys().byPage()) {
for (const keyProperties of page) {
console.log("Key properties: ", keyProperties);
}
}
for await (const page of client.listDeletedKeys().byPage()) {
for (const deletedKey of page) {
console.log("Deleted key: ", deletedKey);
}
}
for await (const page of client.listPropertiesOfKeyVersions(keyName).byPage()) {
for (const versionProperties of page) {
console.log("Version: ", versionProperties);
}
}
التشفير
تقدم هذه المكتبة أيضا مجموعة من الأدوات المساعدة للتشفير المتوفرة من خلال CryptographyClient. على غرار KeyClient، سيتصل CryptographyClient ب Azure Key Vault مع مجموعة بيانات الاعتماد المتوفرة. بمجرد الاتصال، يمكن CryptographyClient تشفير المفاتيح وفك تشفيرها وتوقيعها والتحقق منها والتفافها وفك تشفيرها.
يمكننا بعد ذلك الاتصال بخدمة key vault تماما كما نفعل مع KeyClient.
سنحتاج إلى نسخ بعض الإعدادات من مخزن المفاتيح الذي نتصل به في متغيرات البيئة الخاصة بنا. بمجرد أن تكون في بيئتنا، يمكننا الوصول إليها باستخدام التعليمات البرمجية التالية:
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
// Create or retrieve a key from the keyvault
const myKey = await client.createKey("MyKey", "RSA");
// Lastly, create our cryptography client and connect to the service
const cryptographyClient = new CryptographyClient(myKey, credential);
تشفير
سيقوم encrypt بتشفير رسالة.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const myKey = await client.createKey("MyKey", "RSA");
const cryptographyClient = new CryptographyClient(myKey.id, credential);
const encryptResult = await cryptographyClient.encrypt({
algorithm: "RSA1_5",
plaintext: Buffer.from("My Message"),
});
console.log("encrypt result: ", encryptResult.result);
فك تشفير
سيقوم decrypt بفك تشفير رسالة مشفرة.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const myKey = await client.createKey("MyKey", "RSA");
const cryptographyClient = new CryptographyClient(myKey.id, credential);
const encryptResult = await cryptographyClient.encrypt({
algorithm: "RSA1_5",
plaintext: Buffer.from("My Message"),
});
console.log("encrypt result: ", encryptResult.result);
const decryptResult = await cryptographyClient.decrypt({
algorithm: "RSA1_5",
ciphertext: encryptResult.result,
});
console.log("decrypt result: ", decryptResult.result.toString());
وقع
سيقوم sign بالتوقيع بشكل مشفر على ملخص (تجزئة) رسالة بتوقيع.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
import { createHash } from "node:crypto";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
let myKey = await client.createKey("MyKey", "RSA");
const cryptographyClient = new CryptographyClient(myKey, credential);
const signatureValue = "MySignature";
const hash = createHash("sha256");
const digest = hash.update(signatureValue).digest();
console.log("digest: ", digest);
const signResult = await cryptographyClient.sign("RS256", digest);
console.log("sign result: ", signResult.result);
توقيع البيانات
سيقوم signData بالتوقيع على رسالة بتوقيع بشكل مشفر.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const myKey = await client.createKey("MyKey", "RSA");
const cryptographyClient = new CryptographyClient(myKey, credential);
const signResult = await cryptographyClient.signData("RS256", Buffer.from("My Message"));
console.log("sign result: ", signResult.result);
تحقق
سيتحقق verify بشكل مشفر من توقيع الملخص الموقع بالتوقيع المحدد.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
import { createHash } from "node:crypto";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const myKey = await client.createKey("MyKey", "RSA");
const cryptographyClient = new CryptographyClient(myKey, credential);
const hash = createHash("sha256");
hash.update("My Message");
const digest = hash.digest();
const signResult = await cryptographyClient.sign("RS256", digest);
console.log("sign result: ", signResult.result);
const verifyResult = await cryptographyClient.verify("RS256", digest, signResult.result);
console.log("verify result: ", verifyResult.result);
التحقق من البيانات
سيتحقق verifyData بشكل مشفر من توقيع الرسالة الموقعة بالتوقيع المحدد.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const myKey = await client.createKey("MyKey", "RSA");
const cryptographyClient = new CryptographyClient(myKey, credential);
const buffer = Buffer.from("My Message");
const signResult = await cryptographyClient.signData("RS256", buffer);
console.log("sign result: ", signResult.result);
const verifyResult = await cryptographyClient.verifyData("RS256", buffer, signResult.result);
console.log("verify result: ", verifyResult.result);
مفتاح الالتفاف
سيقوم wrapKey بتضمين مفتاح بطبقة تشفير.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const myKey = await client.createKey("MyKey", "RSA");
const cryptographyClient = new CryptographyClient(myKey, credential);
const wrapResult = await cryptographyClient.wrapKey("RSA-OAEP", Buffer.from("My Key"));
console.log("wrap result:", wrapResult.result);
فك المفتاح
سيقوم unwrapKey بفك المفتاح الملتف.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const client = new KeyClient(url, credential);
const myKey = await client.createKey("MyKey", "RSA");
const cryptographyClient = new CryptographyClient(myKey, credential);
const wrapResult = await cryptographyClient.wrapKey("RSA-OAEP", Buffer.from("My Key"));
console.log("wrap result:", wrapResult.result);
const unwrapResult = await cryptographyClient.unwrapKey("RSA-OAEP", wrapResult.result);
console.log("unwrap result: ", unwrapResult.result);
استكشاف الأخطاء وإصلاحها
راجع دليل استكشاف الأخطاء وإصلاحها للحصول على تفاصيل حول كيفية تشخيص سيناريوهات الفشل المختلفة.
قد يساعد تمكين التسجيل في الكشف عن معلومات مفيدة حول حالات الفشل. لمشاهدة سجل طلبات واستجابات HTTP، قم بتعيين متغير البيئة AZURE_LOG_LEVEL إلى info. بدلا من ذلك، يمكن تمكين التسجيل في وقت التشغيل عن طريق استدعاء setLogLevel في @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
الخطوات التالية
يمكنك العثور على المزيد من نماذج التعليمات البرمجية من خلال الارتباطات التالية:
- Key Vault Keys Samples (JavaScript)
- Key Vault Keys Samples (TypeScript)
- حالات اختبار مفاتيح key Vault
المساهمه
إذا كنت ترغب في المساهمة في هذه المكتبة، فيرجى قراءة دليل المساهمة لمعرفة المزيد حول كيفية إنشاء التعليمات البرمجية واختبارها.
Azure SDK for JavaScript