مكتبة عميل Azure Key Vault Key ل JavaScript - الإصدار 4.8.0
Azure Key Vault هي خدمة تسمح لك بتشفير مفاتيح المصادقة ومفاتيح حساب التخزين ومفاتيح تشفير البيانات وملفات .pfx وكلمات المرور باستخدام مفاتيح آمنة. إذا كنت ترغب في معرفة المزيد حول Azure Key Vault، فقد تحتاج إلى مراجعة: ما هو Azure Key Vault؟
Azure Key Vault HSM المدارة هي خدمة سحابية مدارة بالكامل ومتاحة للغاية ومستأجر واحد ومتوافقة مع المعايير تمكنك من حماية مفاتيح التشفير لتطبيقاتك السحابية باستخدام وحدات HSM التي تم التحقق من صحتها من FIPS 140-2 المستوى 3. إذا كنت ترغب في معرفة المزيد حول Azure Key Vault HSM المدار، فقد تحتاج إلى مراجعة: ما هو Azure Key Vault HSM المدار؟
يدعم عميل مكتبة مفاتيح Azure Key Vault مفاتيح RSA ومفاتيح منحنى القطع الناقص (EC) بالإضافة إلى المفاتيح المتماثلة (oct) عند التشغيل مقابل HSM مدار، ولكل منها دعم مطابق في وحدات أمان الأجهزة (HSM). يوفر عمليات لإنشاء المفاتيح وإصداراتها واستردادها وتحديثها وحذفها ومسحها والنسخ الاحتياطي واستعادتها وإدراجها.
استخدم مكتبة العميل ل Azure Key Vault Keys في تطبيق Node.js الخاص بك من أجل:
- إنشاء مفاتيح باستخدام منحنى القطع الناقص أو تشفير RSA، مدعوم اختياريا بوحدات أمان الأجهزة (HSM).
- مفاتيح الاستيراد والحذف والتحديث.
- احصل على مفتاح واحد أو أكثر ومفاتيح محذوفة، باستخدام سماتها.
- استرداد مفتاح محذوف واستعادة مفتاح تم نسخه احتياطيا.
- احصل على إصدارات المفتاح.
باستخدام عميل التشفير المتوفر في هذه المكتبة، يمكنك أيضا الوصول إلى:
- تشفير
- فك تشفير
- التوقيع
- التحقق
- مفاتيح الالتفاف
- إلغاء كتابة المفاتيح
ملاحظة: لا يمكن استخدام هذه الحزمة في المستعرض بسبب قيود خدمة Azure Key Vault، يرجى الرجوع إلى هذا المستند للحصول على إرشادات.
الروابط الرئيسية:
الشروع في العمل
البيئات المعتمدة حاليًا
المتطلبات الأساسية
- اشتراك Azure
- Key Vault Azure موجود. إذا كنت بحاجة إلى إنشاء مخزن مفاتيح، يمكنك القيام بذلك في مدخل Microsoft Azure باتباع الخطوات الواردة في هذا المستند. بدلا من ذلك، استخدم Azure CLI باتباع هذه الخطوات.
- إذا كنت تستخدم HSM المدار، فإن Azure Key Vault 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 للحصول على مزيد من المعلومات.
المفاهيم الرئيسية
- عميل المفتاح هو الواجهة الأساسية للتفاعل مع أساليب واجهة برمجة التطبيقات المتعلقة بالمفاتيح في Azure Key Vault API من تطبيق JavaScript. بمجرد تهيئته، فإنه يوفر مجموعة أساسية من الأساليب التي يمكن استخدامها لإنشاء المفاتيح وقراءتها وتحديثها وحذفها.
- إصدار المفتاح هو إصدار من مفتاح في 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.
فيما يلي مثال سريع. أولا، استيراد DefaultAzureCredential
و KeyClient
:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");
بمجرد استيرادها، يمكننا الاتصال بخدمة Key Vault:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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
في منشئ العميل كما هو موضح أدناه:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
// 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 Keys. تتكون السيناريوهات التي يتم تناولها هنا من:
- إنشاء مفتاح.
- الحصول على مفتاح.
- إنشاء المفاتيح وتحديثها باستخدام السمات.
- حذف مفتاح.
- تكرار قوائم المفاتيح.
إنشاء مفتاح
createKey
ينشئ مفتاحا ليتم تخزينه في Key Vault Azure. إذا كان هناك مفتاح بنفس الاسم موجود بالفعل، فسيتم إنشاء إصدار جديد من المفتاح.
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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";
async function main() {
const result = await client.createKey(keyName, "RSA");
console.log("result: ", result);
}
main();
المعلمة الثانية المرسلة إلى createKey
هي نوع المفتاح. يعتمد نوع المفاتيح المدعومة على SKU وما إذا كنت تستخدم Azure Key Vault أو Azure Managed HSM. للحصول على قائمة محدثة من أنواع المفاتيح المدعومة، يرجى الرجوع إلى حول المفاتيح
الحصول على مفتاح
أبسط طريقة لقراءة المفاتيح مرة أخرى من المخزن هي الحصول على مفتاح بالاسم. سيؤدي ذلك إلى استرداد أحدث إصدار من المفتاح. يمكنك اختياريا الحصول على إصدار مختلف من المفتاح إذا قمت بتحديده كجزء من المعلمات الاختيارية.
getKey
استرداد مخازن رئيسية سابقة في Key Vault.
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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";
async function main() {
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);
}
main();
إنشاء المفاتيح وتحديثها باستخدام السمات
يمكن أيضا تعيين السمات التالية لأي مفتاح في Key Vault:
tags
: أي مجموعة من قيم المفاتيح التي يمكن استخدامها للبحث عن المفاتيح وتصفيتها.keyOps
: صفيف من العمليات التي سيتمكن هذا المفتاح من تنفيذها (encrypt
، ،decrypt
sign
،verify
،wrapKey
،unwrapKey
).enabled
: قيمة منطقية تحدد ما إذا كان يمكن قراءة قيمة المفتاح أم لا.notBefore
: تاريخ معين يمكن بعده استرداد قيمة المفتاح.expires
: تاريخ معين لا يمكن بعده استرداد قيمة المفتاح.
يمكن إرسال كائن بهذه السمات كمعلمة ثالثة من createKey
، مباشرة بعد اسم المفتاح وقيمته، كما يلي:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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";
async function main() {
const result = await client.createKey(keyName, "RSA", {
enabled: false,
});
console.log("result: ", result);
}
main();
سيؤدي ذلك إلى إنشاء إصدار جديد من نفس المفتاح، والذي سيكون له أحدث السمات المقدمة.
يمكن أيضا تحديث السمات إلى إصدار مفتاح موجود باستخدام updateKeyProperties
، كما يلي:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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";
async function main() {
const result = await client.createKey(keyName, "RSA");
await client.updateKeyProperties(keyName, result.properties.version, {
enabled: false,
});
}
main();
حذف مفتاح
beginDeleteKey
يبدأ الأسلوب في حذف مفتاح.
ستحدث هذه العملية في الخلفية بمجرد توفر الموارد الضرورية.
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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";
async function main() {
const poller = await client.beginDeleteKey(keyName);
await poller.pollUntilDone();
}
main();
إذا تم تمكين الحذف المبدئي Key Vault، فستسمي هذه العملية المفتاح فقط كمفتاح محذوف. لا يمكن تحديث مفتاح محذوف. يمكن قراءتها أو استردادها أو إزالتها فقط.
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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";
async function main() {
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);
}
main();
نظرا لأن المفاتيح تستغرق بعض الوقت لحذفها بالكامل، beginDeleteKey
فترجع كائن Poller الذي يتعقب عملية التشغيل الطويل الأساسية وفقا لإرشاداتنا: https://azure.github.io/azure-sdk/typescript_design.html#ts-lro
سيسمح لك الاستقصاء المستلم بالحصول على المفتاح المحذوف عن طريق استدعاء إلى poller.getResult()
.
يمكنك أيضا الانتظار حتى ينتهي الحذف إما عن طريق تشغيل استدعاءات الخدمة الفردية حتى يتم حذف المفتاح، أو بالانتظار حتى تنتهي العملية:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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";
async function main() {
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);
}
main();
هناك طريقة أخرى للانتظار حتى يتم حذف المفتاح بالكامل وهي إجراء مكالمات فردية، كما يلي:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");
const { delay } = require("@azure/core-util");
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";
async function main() {
const poller = await client.beginDeleteKey(keyName);
while (!poller.isDone()) {
await poller.poll();
await delay(5000);
}
console.log(`The key ${keyName} is fully deleted`);
}
main();
تكوين التدوير التلقائي للمفتاح
باستخدام KeyClient، يمكنك تكوين التدوير التلقائي للمفتاح عن طريق تحديد نهج التدوير. بالإضافة إلى ذلك، يوفر KeyClient طريقة لتدوير مفتاح عند الطلب عن طريق إنشاء إصدار جديد من المفتاح المحدد.
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");
const url = `https://<YOUR KEYVAULT NAME>.vault.azure.net`;
const client = new KeyClient(url, new DefaultAzureCredential());
async function main() {
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);
}
main();
تكرار قوائم المفاتيح
باستخدام KeyClient، يمكنك استرداد جميع المفاتيح في Key Vault Azure والتكرار منها، وكذلك من خلال جميع المفاتيح المحذوفة وإصدارات مفتاح معين. تتوفر أساليب واجهة برمجة التطبيقات التالية:
listPropertiesOfKeys
ستسرد جميع المفاتيح غير المحذوفة حسب أسمائها، فقط في أحدث إصداراتها.listDeletedKeys
ستسرد جميع المفاتيح المحذوفة حسب أسمائها، فقط في أحدث إصداراتها.listPropertiesOfKeyVersions
سيسرد جميع إصدارات المفتاح استنادا إلى اسم المفتاح.
والتي يمكن استخدامها على النحو التالي:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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";
async function main() {
for await (let keyProperties of client.listPropertiesOfKeys()) {
console.log("Key properties: ", keyProperties);
}
for await (let deletedKey of client.listDeletedKeys()) {
console.log("Deleted: ", deletedKey);
}
for await (let versionProperties of client.listPropertiesOfKeyVersions(keyName)) {
console.log("Version properties: ", versionProperties);
}
}
main();
سترجع جميع هذه الأساليب جميع النتائج المتوفرة في وقت واحد. لاستردادها حسب الصفحات، أضف .byPage()
مباشرة بعد استدعاء أسلوب واجهة برمجة التطبيقات الذي تريد استخدامه، كما يلي:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@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";
async function main() {
for await (let page of client.listPropertiesOfKeys().byPage()) {
for (let keyProperties of page) {
console.log("Key properties: ", keyProperties);
}
}
for await (let page of client.listDeletedKeys().byPage()) {
for (let deletedKey of page) {
console.log("Deleted key: ", deletedKey);
}
}
for await (let page of client.listPropertiesOfKeyVersions(keyName).byPage()) {
for (let versionProperties of page) {
console.log("Version: ", versionProperties);
}
}
}
main();
التشفير
توفر هذه المكتبة أيضا مجموعة من الأدوات المساعدة للتشفير المتوفرة من خلال 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 keysClient = new KeyClient(url, credential);
async function main() {
// Create or retrieve a key from the keyvault
let myKey = await keysClient.createKey("MyKey", "RSA");
// Lastly, create our cryptography client and connect to the service
const cryptographyClient = new CryptographyClient(myKey, credential);
}
main();
تشفير
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 keysClient = new KeyClient(url, credential);
async function main() {
let myKey = await keysClient.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);
}
main();
فك تشفير
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 keysClient = new KeyClient(url, credential);
async function main() {
let myKey = await keysClient.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());
}
main();
تسجيل
sign
سيوقع بشكل مشفر ملخص (تجزئة) رسالة بتوقيع.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
import { createHash } from "crypto";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const keysClient = new KeyClient(url, credential);
async function main() {
let myKey = await keysClient.createKey("MyKey", "RSA");
const cryptographyClient = new CryptographyClient(myKey, credential);
const signatureValue = "MySignature";
let hash = createHash("sha256");
let digest = hash.update(signatureValue).digest();
console.log("digest: ", digest);
const signResult = await cryptographyClient.sign("RS256", digest);
console.log("sign result: ", signResult.result);
}
main();
توقيع البيانات
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 keysClient = new KeyClient(url, credential);
async function main() {
let myKey = await keysClient.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);
}
main();
التحقق
verify
سيتحقق بشكل مشفر من توقيع الملخص الموقع بالتوقيع المحدد.
import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
import { createHash } from "crypto";
const credential = new DefaultAzureCredential();
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;
const keysClient = new KeyClient(url, credential);
async function main() {
let myKey = await keysClient.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);
}
main();
التحقق من البيانات
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 keysClient = new KeyClient(url, credential);
async function main() {
let myKey = await keysClient.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);
}
main();
مفتاح الالتفاف
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 keysClient = new KeyClient(url, credential);
async function main() {
let myKey = await keysClient.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);
}
main();
مفتاح إلغاء الكتابة
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 keysClient = new KeyClient(url, credential);
async function main() {
let myKey = await keysClient.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);
}
main();
استكشاف الأخطاء وإصلاحها
راجع دليل استكشاف الأخطاء وإصلاحها للحصول على تفاصيل حول كيفية تشخيص سيناريوهات الفشل المختلفة.
قد يساعد تمكين التسجيل في الكشف عن معلومات مفيدة حول حالات الفشل. للاطلاع على سجل لطلبات HTTP واستجاباته، قم بتعيين AZURE_LOG_LEVEL
متغير البيئة إلى info
. بدلًا من ذلك، يمكن تمكين التسجيل في وقت التشغيل عن طريق الاتصال setLogLevel
بـ @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
الخطوات التالية
يمكنك العثور على المزيد من نماذج التعليمات البرمجية من خلال الارتباطات التالية:
- Key Vault عينات المفاتيح (JavaScript)
- Key Vault عينات المفاتيح (TypeScript)
- Key Vault حالات اختبار المفاتيح
المساهمة
إذا كنت ترغب في المساهمة في هذه المكتبة، يرجى قراءة دليل المساهمة لمعرفة المزيد حول كيفية إنشاء التعليمات البرمجية واختبارها.
Azure SDK for JavaScript