مشاركة عبر


مكتبة عميل 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 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، ، decryptsign، 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");

الخطوات التالية

يمكنك العثور على المزيد من نماذج التعليمات البرمجية من خلال الارتباطات التالية:

المساهمة

إذا كنت ترغب في المساهمة في هذه المكتبة، يرجى قراءة دليل المساهمة لمعرفة المزيد حول كيفية إنشاء التعليمات البرمجية واختبارها.

مرات الظهور