Aracılığıyla paylaş


JavaScript için Azure Key Vault Anahtar istemci kitaplığı - sürüm 4.8.0

Azure Key Vault kimlik doğrulama anahtarlarını, depolama hesabı anahtarlarını, veri şifreleme anahtarlarını, .pfx dosyalarını ve parolaları güvenli anahtarları kullanarak şifrelemenize olanak tanıyan bir hizmettir. Azure Key Vault hakkında daha fazla bilgi edinmek isterseniz şunları gözden geçirebilirsiniz: Azure Key Vault nedir?

Azure Key Vault Yönetilen HSM, FIPS 140-2 Düzey 3 doğrulanmış HSM'leri kullanarak bulut uygulamalarınız için şifreleme anahtarlarını korumanıza olanak tanıyan, tam olarak yönetilen, yüksek oranda kullanılabilir, tek kiracılı, standartlara uyumlu bir bulut hizmetidir. Azure Key Vault Yönetilen HSM hakkında daha fazla bilgi edinmek isterseniz şunları gözden geçirebilirsiniz: Azure Key Vault Yönetilen HSM nedir?

Azure Key Vault anahtar kitaplığı istemcisi, her biri donanım güvenlik modüllerinde (HSM) karşılık gelen desteğe sahip yönetilen bir HSM'ye karşı çalışırken RSA anahtarlarını, Elips Eğrisi (EC) anahtarlarını ve simetrik (sekizli) anahtarları destekler. Anahtarları ve sürümlerini oluşturma, alma, güncelleştirme, silme, temizleme, yedekleme, geri yükleme ve listeleme işlemleri sunar.

Node.js uygulamanızda Azure Key Vault Anahtarları için istemci kitaplığını kullanarak:

  • İsteğe bağlı olarak Donanım Güvenlik Modülleri (HSM) tarafından desteklenen üç nokta eğrisi veya RSA şifrelemesi kullanarak anahtarlar oluşturun.
  • Anahtarları içeri aktarma, silme ve güncelleştirme.
  • Öznitelikleriyle birlikte bir veya daha fazla anahtar ve silinmiş anahtar alın.
  • Silinen bir anahtarı kurtarın ve yedeklenen bir anahtarı geri yükleyin.
  • Bir anahtarın sürümlerini alın.

Bu kitaplıkta bulunan şifreleme istemcisini kullanarak aşağıdakilere de erişebilirsiniz:

  • Şifreleme
  • Şifre çözme
  • İmzalama
  • Doğrulama
  • Kaydırma tuşları
  • Tuşların işaretini kaldırma

Not: Azure Key Vault hizmet sınırlamaları nedeniyle bu paket tarayıcıda kullanılamıyor, rehberlik için lütfen bu belgeye bakın.

Önemli bağlantılar:

Başlarken

Şu anda desteklenen ortamlar

Önkoşullar

Paketi yükleme

npm kullanarak Azure Key Vault Anahtarı istemci kitaplığını yükleme

npm install @azure/keyvault-keys

Kimlik kitaplığını yükleme

Azure Key Vault istemcileri, Azure kimlik kitaplığını kullanarak kimlik doğrulaması yapar. Npm kullanarak da yükleyin

npm install @azure/identity

TypeScript'i yapılandırma

TypeScript kullanıcılarının Düğüm türü tanımlarının yüklü olması gerekir:

npm install @types/node

ayrıca tsconfig.json etkinleştirmeniz compilerOptions.allowSyntheticDefaultImports gerekir. seçeneğini etkinleştirdiyseniz compilerOptions.esModuleInteropvarsayılan allowSyntheticDefaultImports olarak etkin olduğunu unutmayın. Daha fazla bilgi için bkz. TypeScript'in derleyici seçenekleri el kitabı .

Önemli kavramlar

  • Anahtar istemcisi, Bir JavaScript uygulamasından Azure Key Vault API'sindeki anahtarlarla ilgili API yöntemleriyle etkileşime geçmek için kullanılan birincil arabirimdir. Başlatıldıktan sonra anahtarları oluşturmak, okumak, güncelleştirmek ve silmek için kullanılabilecek temel bir yöntem kümesi sağlar.
  • Anahtar sürümü, Key Vault bir anahtarın sürümüdür. Kullanıcı benzersiz bir anahtar adına her değer atayışında, bu anahtarın yeni bir sürümü oluşturulur. Bir anahtarın ada göre alınması, sorguya belirli bir sürüm sağlanmadığı sürece her zaman atanan en son değeri döndürür.
  • Geçici silme , Key Vault'ların silme ve temizlemeyi iki ayrı adım olarak desteklemesini sağlar, bu nedenle silinen anahtarlar hemen kaybolmaz. Bu yalnızca Key Vault geçici silme etkinleştirildiğinde gerçekleşir.
  • Anahtar yedeklemesi oluşturulan herhangi bir anahtardan oluşturulabilir. Bu yedeklemeler ikili veri olarak gelir ve yalnızca daha önce silinmiş bir anahtarı yeniden oluşturmak için kullanılabilir.
  • Şifreleme istemcisi, Key Vault API'sindeki anahtarLAR API yöntemleriyle etkileşim kuran ayrı bir arabirimdir. Bu istemci yalnızca Key Vault önceden oluşturulmuş bir anahtar kullanılarak yürütülebilen şifreleme işlemlerine odaklanır. Şifreleme bölümünde bu istemci hakkında daha fazla bilgi.

Azure Active Directory ile kimlik doğrulaması

Key Vault hizmeti, API'lerinde isteklerin kimliğini doğrulamak için Azure Active Directory'ye dayanır. Paket, @azure/identity uygulamanızın bunu yapmak için kullanabileceği çeşitli kimlik bilgileri türleri sağlar. için README@azure/identity, başlamanıza yönelik daha fazla ayrıntı ve örnek sağlar.

Azure Key Vault hizmetiyle etkileşim kurmak için sınıfının bir örneğini, kasa url'siniKeyClient ve kimlik bilgisi nesnesini oluşturmanız gerekir. Bu belgede gösterilen örneklerde, yerel geliştirme ve üretim ortamları dahil olmak üzere çoğu senaryo için uygun olan adlı DefaultAzureCredentialbir kimlik bilgisi nesnesi kullanılır. Ayrıca, üretim ortamlarında kimlik doğrulaması için yönetilen kimlik kullanmanızı öneririz.

Kimlik doğrulamanın farklı yolları ve bunların ilgili kimlik bilgileri türleri hakkında daha fazla bilgiyi Azure Kimliği belgelerinde bulabilirsiniz.

İşte hızlı bir örnek. İlk olarak, içeri aktar DefaultAzureCredential ve KeyClient:

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

Bunlar içeri aktarıldıktan sonra Key Vault hizmetine bağlanabiliriz:

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 hizmet API'sinin sürümünü belirtme

Varsayılan olarak, bu paket en son Azure Key Vault hizmeti sürümünü kullanır.7.2 Aşağıda gösterildiği gibi istemci oluşturucusunda seçeneğini serviceVersion ayarlayarak kullanılan hizmet sürümünü değiştirebilirsiniz:

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
});

Örnekler

Aşağıdaki bölümlerde Azure Key Vault Anahtarlarını kullanan bazı yaygın görevleri kapsayan kod parçacıkları sağlanır. Burada ele alınan senaryolar şunlardan oluşur:

Anahtar oluşturma

createKeyAzure Key Vault depolanacak bir Anahtar oluşturur. Aynı ada sahip bir anahtar zaten varsa, anahtarın yeni bir sürümü oluşturulur.

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();

gönderilen createKey ikinci parametre anahtarın türüdür. Desteklenen anahtarların türü SKU'ya ve Azure Key Vault mı yoksa Azure Yönetilen HSM mi kullandığınıza bağlıdır. Desteklenen anahtar türlerinin güncel listesi için lütfen Anahtarlar hakkında bölümüne bakın

Anahtar alma

Anahtarları kasadan geri okumanın en basit yolu, adıyla bir anahtar almaktır. Bu işlem anahtarın en son sürümünü alır. İsteğe bağlı parametrelerin bir parçası olarak belirtirseniz isteğe bağlı olarak anahtarın farklı bir sürümünü alabilirsiniz.

getKeyKey Vault önceki depoların bir anahtarını alır.

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();

Özniteliklerle anahtar oluşturma ve güncelleştirme

Aşağıdaki öznitelikler Key Vault herhangi bir anahtara da atanabilir:

  • tags: Anahtarları aramak ve filtrelemek için kullanılabilecek herhangi bir anahtar-değer kümesi.
  • keyOps: Bu anahtarın gerçekleştirebileceği işlemlerin dizisi (encrypt, decrypt, sign, verify, wrapKey, ). unwrapKey
  • enabled: Anahtar değerinin okunup okunamayacağını belirleyen boole değeri.
  • notBefore: Anahtar değerinin alınabildiği belirli bir tarih.
  • expires: Anahtar değerinin alınamadığı belirli bir tarih.

Bu özniteliklere sahip bir nesne, anahtarın adından ve değerinden hemen sonra üçüncü parametresi createKeyolarak aşağıdaki gibi gönderilebilir:

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();

Bu, aynı anahtarın en son sağlanan özniteliklerine sahip yeni bir sürümünü oluşturur.

Öznitelikler aşağıdaki gibi ile updateKeyPropertiesmevcut bir anahtar sürümüne güncelleştirilebilir:

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();

Anahtar silme

beginDeleteKey yöntemi bir anahtarı silme işlemini başlatır. Bu işlem, gerekli kaynaklar kullanılabilir duruma gelir gelmez arka planda gerçekleşir.

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 geçici silme etkinleştirildiyse, bu işlem anahtarı yalnızca silinmiş anahtar olarak etiketler. Silinen anahtar güncelleştirilemez. Bunlar yalnızca okunabilir, kurtarılabilir veya temizlenebilir.

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();

Anahtarların tamamen silinmesi biraz zaman aldığından temel beginDeleteKey alınan Uzun Süre Çalışan İşlemi yönergelerimize göre takip eden bir Poller nesnesi döndürür: https://azure.github.io/azure-sdk/typescript_design.html#ts-lro

Alınan poller, çağrısı yaparak silinen anahtarı almanıza poller.getResult()olanak sağlar. Ayrıca, anahtar silinene kadar tek tek hizmet çağrılarını çalıştırarak veya işlem bitene kadar bekleyerek silme işleminin bitmesini de bekleyebilirsiniz:

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();

Anahtar tamamen silinene kadar beklemenin bir diğer yolu da aşağıdaki gibi tek tek çağrılar yapmaktır:

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();

Otomatik Anahtar Döndürmeyi Yapılandırma

KeyClient kullanarak, döndürme ilkesini belirterek bir anahtar için otomatik anahtar döndürmeyi yapılandırabilirsiniz. Buna ek olarak, KeyClient verilen anahtarın yeni bir sürümünü oluşturarak isteğe bağlı olarak bir anahtarı döndürmek için bir yöntem sağlar.

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();

Anahtar listelerini yineleme

KeyClient'ı kullanarak, azure Key Vault tüm anahtarların yanı sıra tüm silinen anahtarları ve belirli bir anahtarın sürümlerini alabilir ve yineleyebilirsiniz. Aşağıdaki API yöntemleri kullanılabilir:

  • listPropertiesOfKeys , silinmemiş tüm anahtarlarınızı adlarına göre, yalnızca en son sürümlerinde listeler.
  • listDeletedKeys tüm silinen anahtarlarınızı adlarına göre, yalnızca en son sürümlerinde listeler.
  • listPropertiesOfKeyVersions bir anahtarın tüm sürümlerini bir anahtar adına göre listeler.

Aşağıdaki gibi kullanılabilir:

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();

Bu yöntemlerin tümü tüm kullanılabilir sonuçları aynı anda döndürür. Bunları sayfalara göre almak için, kullanmak istediğiniz API yöntemini çağırdıktan hemen sonra aşağıdaki gibi ekleyin .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();

Şifreleme

Bu kitaplık, aracılığıyla CryptographyClientkullanılabilen bir dizi şifreleme yardımcı programı da sunar. benzer şekildeKeyClient, CryptographyClient sağlanan kimlik bilgileri kümesiyle Azure Key Vault'a bağlanır. Bağlandıktan sonra anahtarları şifreleyebilir, CryptographyClient şifrelerini çözebilir, imzalayabilir, doğrulayabilir, sarmalayabilir ve anahtarları açabilirsiniz.

Daha sonra anahtar kasası hizmetine aynı ile KeyClientyaptığımız gibi bağlanabiliriz. Bağlandığımız anahtar kasasından bazı ayarları ortam değişkenlerimize kopyalamamız gerekir. Bunlar ortamımıza girdikten sonra aşağıdaki kodla bunlara erişebiliriz:

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

encrypt bir iletiyi şifreler.

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

decrypt şifrelenmiş bir iletinin şifresini çözer.

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();

İşaret

sign , bir iletinin özetini (karma) imza ile şifreli olarak imzalar.

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();

Verileri İmzala

signData bir iletiyi imzayla şifreli olarak imzalar.

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();

Doğrulama

verify , imzalanan özetin verilen imzayla imzalandığını kriptografik olarak doğrular.

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();

Verileri Doğrulama

verifyData , imzalanan iletinin verilen imzayla imzalandığını kriptografik olarak doğrular.

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();

Sarmalama Anahtarı

wrapKey bir anahtarı şifreleme katmanıyla sarmalar.

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();

Anahtar Açma

unwrapKey sarmalanmış bir anahtarın sarmalanmış anahtarının işaretini kaldıracaktır.

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();

Sorun giderme

Çeşitli hata senaryolarını tanılama hakkında ayrıntılı bilgi için sorun giderme kılavuzumuza bakın.

Günlüğe kaydetmenin etkinleştirilmesi hatalarla ilgili yararlı bilgilerin ortaya çıkarılmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için ortam değişkenini AZURE_LOG_LEVEL olarak infoayarlayın. Alternatif olarak, günlüğü çalışma zamanında içinde çağrılarak setLogLevel@azure/loggeretkinleştirilebilir:

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

Sonraki adımlar

Aşağıdaki bağlantılardan daha fazla kod örneği bulabilirsiniz:

Katkıda bulunma

Bu kitaplığa katkıda bulunmak isterseniz, kodu derleme ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzunu okuyun.

İzlenimler