Pustaka klien Azure Key Vault Key untuk JavaScript - versi 4.8.0
Azure Key Vault adalah layanan yang memungkinkan Anda mengenkripsi kunci autentikasi, kunci akun penyimpanan, kunci enkripsi data, file .pfx, dan kata sandi dengan menggunakan kunci aman. Jika Anda ingin mengetahui selengkapnya tentang Azure Key Vault, Anda mungkin ingin meninjau: Apa itu Azure Key Vault?
Azure Key Vault Managed HSM adalah layanan cloud yang dikelola sepenuhnya, sangat tersedia, penyewa tunggal, sesuai standar yang memungkinkan Anda melindungi kunci kriptografi untuk aplikasi cloud Anda menggunakan HSM tervalidasi FIPS 140-2 Level 3. Jika Anda ingin mengetahui selengkapnya tentang Azure Key Vault Managed HSM, Anda mungkin ingin meninjau: Apa itu Azure Key Vault Managed HSM?
Klien pustaka kunci Azure Key Vault mendukung kunci RSA, kunci Kurva Elips (EC), serta kunci Simetris (okt) saat berjalan terhadap HSM terkelola, masing-masing dengan dukungan yang sesuai dalam modul keamanan perangkat keras (HSM). Ini menawarkan operasi untuk membuat, mengambil, memperbarui, menghapus, menghapus menyeluruh, mencadangkan, memulihkan, dan mencantumkan kunci dan versinya.
Gunakan pustaka klien untuk Azure Key Vault Keys di aplikasi Node.js Anda untuk:
- Buat kunci menggunakan kurva elips atau enkripsi RSA, yang didukung secara opsional oleh Modul Keamanan Perangkat Keras (HSM).
- Impor, Hapus, dan Perbarui kunci.
- Dapatkan satu atau beberapa kunci dan kunci yang dihapus, dengan atributnya.
- Pulihkan kunci yang dihapus dan pulihkan kunci yang dicadangkan.
- Dapatkan versi kunci.
Menggunakan klien kriptografi yang tersedia di pustaka ini, Anda juga memiliki akses ke:
- Enkripsi
- Mendekripsi
- Penandatanganan
- Memverifikasi
- Kunci pembungkusan
- Membongkar kunci
Catatan: Paket ini tidak dapat digunakan di browser karena keterbatasan layanan Azure Key Vault, silakan lihat dokumen ini untuk panduan.
Tautan utama:
Memulai
Lingkungan yang didukung saat ini
Prasyarat
- Langganan Azure
- Azure Key Vault yang sudah ada. Jika Anda perlu membuat brankas kunci, Anda dapat melakukannya di Portal Microsoft Azure dengan mengikuti langkah-langkah dalam dokumen ini. Atau, gunakan Azure CLI dengan mengikuti langkah-langkah ini.
- Jika menggunakan HSM Terkelola, Azure Key Vault Managed HSM yang sudah ada. Jika Anda perlu membuat HSM Terkelola, Anda bisa melakukannya menggunakan Azure CLI dengan mengikuti langkah-langkah dalam dokumen ini.
Instal paketnya
Menginstal pustaka klien Azure Key Vault Key menggunakan npm
npm install @azure/keyvault-keys
Menginstal pustaka identitas
Klien Azure Key Vault mengautentikasi menggunakan pustaka identitas Azure. Instal juga menggunakan npm
npm install @azure/identity
Mengonfigurasi TypeScript
Pengguna TypeScript harus menginstal definisi jenis Node:
npm install @types/node
Anda juga perlu mengaktifkan compilerOptions.allowSyntheticDefaultImports
di tsconfig.json Anda. Perhatikan bahwa jika Anda telah mengaktifkan compilerOptions.esModuleInterop
, allowSyntheticDefaultImports
diaktifkan secara default. Lihat buku pegangan opsi pengkompilasi TypeScript untuk informasi selengkapnya.
Konsep utama
- Klien Kunci adalah antarmuka utama untuk berinteraksi dengan metode API yang terkait dengan kunci di Azure Key Vault API dari aplikasi JavaScript. Setelah diinisialisasi, ini menyediakan serangkaian metode dasar yang dapat digunakan untuk membuat, membaca, memperbarui, dan menghapus kunci.
- Versi Kunci adalah versi kunci di Key Vault. Setiap kali pengguna menetapkan nilai ke nama kunci unik, versi baru kunci tersebut dibuat. Mengambil kunci dengan nama akan selalu mengembalikan nilai terbaru yang ditetapkan, kecuali versi tertentu disediakan untuk kueri.
- Penghapusan sementara memungkinkan Key Vault mendukung penghapusan dan pembersihan sebagai dua langkah terpisah, sehingga kunci yang dihapus tidak segera hilang. Ini hanya terjadi jika Key Vault mengaktifkan penghapusan sementara.
- Cadangan Kunci dapat dihasilkan dari kunci yang dibuat. Cadangan ini datang sebagai data biner, dan hanya dapat digunakan untuk meregenerasi kunci yang dihapus sebelumnya.
- Klien Kriptografi adalah antarmuka terpisah yang berinteraksi dengan metode API kunci di API Key Vault. Klien ini hanya berfokus dalam operasi kriptografi yang dapat dijalankan menggunakan kunci yang telah dibuat di Key Vault. Selengkapnya tentang klien ini di bagian Kriptografi .
Mengautentikasi dengan Azure Active Directory
Layanan Key Vault bergantung pada Azure Active Directory untuk mengautentikasi permintaan ke API-nya. Paket ini @azure/identity
menyediakan berbagai jenis kredensial yang dapat digunakan aplikasi Anda untuk melakukan ini. README untuk @azure/identity
memberikan detail dan sampel lebih lanjut untuk memulai Anda.
Untuk berinteraksi dengan layanan Azure Key Vault, Anda harus membuat instans KeyClient
kelas, url vault, dan objek kredensial. Contoh yang ditunjukkan dalam dokumen ini menggunakan objek kredensial bernama DefaultAzureCredential
, yang sesuai untuk sebagian besar skenario, termasuk lingkungan pengembangan dan produksi lokal. Selain itu, sebaiknya gunakan identitas terkelola untuk autentikasi di lingkungan produksi.
Anda dapat menemukan informasi selengkapnya tentang berbagai cara mengautentikasi dan jenis kredensial terkait dalam dokumentasi Azure Identity.
Berikut adalah contoh singkatnya. Pertama, impor DefaultAzureCredential
dan KeyClient
:
const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");
Setelah ini diimpor, kita selanjutnya dapat terhubung ke layanan 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);
Menentukan versi API layanan Azure Key Vault
Secara default, paket ini menggunakan versi layanan Azure Key Vault terbaru yaitu 7.2
. Anda dapat mengubah versi layanan yang digunakan dengan mengatur opsi serviceVersion
di konstruktor klien seperti yang ditunjukkan di bawah ini:
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
});
Contoh
Bagian berikut ini menyediakan cuplikan kode yang mencakup beberapa tugas umum menggunakan Azure Key Vault Keys. Skenario yang dibahas di sini terdiri dari:
- Membuat kunci.
- Mendapatkan kunci.
- Membuat dan memperbarui kunci dengan atribut.
- Menghapus kunci.
- Iterasi daftar kunci.
Membuat kunci
createKey
membuat Kunci untuk disimpan di azure Key Vault. Jika kunci dengan nama yang sama sudah ada, maka versi baru kunci akan dibuat.
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();
Parameter kedua yang dikirim ke createKey
adalah jenis kunci. Jenis kunci yang didukung akan bergantung pada SKU dan apakah Anda menggunakan Azure Key Vault atau Azure Managed HSM. Untuk daftar terbaru jenis kunci yang didukung, lihat Tentang kunci
Mendapatkan kunci
Cara paling sederhana untuk membaca kembali kunci dari brankas adalah dengan mendapatkan kunci berdasarkan nama. Ini akan mengambil versi kunci terbaru. Anda bisa secara opsional mendapatkan versi kunci yang berbeda jika Anda menentukannya sebagai bagian dari parameter opsional.
getKey
mengambil penyimpanan kunci sebelumnya di 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();
Membuat dan memperbarui kunci dengan atribut
Atribut berikut juga dapat ditetapkan ke kunci apa pun dalam Key Vault:
tags
: Setiap set kunci-nilai yang dapat digunakan untuk mencari dan memfilter kunci.keyOps
: Array operasi yang akan dapat dilakukan kunci ini (encrypt
, ,decrypt
,sign
verify
,wrapKey
,unwrapKey
).enabled
: Nilai boolean yang menentukan apakah nilai kunci dapat dibaca atau tidak.notBefore
: Tanggal tertentu setelah nilai kunci dapat diambil.expires
: Tanggal tertentu setelah itu nilai kunci tidak dapat diambil.
Objek dengan atribut ini dapat dikirim sebagai parameter ketiga dari createKey
, tepat setelah nama dan nilai kunci, sebagai berikut:
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();
Ini akan membuat versi baru dari kunci yang sama, yang akan memiliki atribut terbaru yang disediakan.
Atribut juga dapat diperbarui ke versi kunci yang ada dengan updateKeyProperties
, sebagai berikut:
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();
Menghapus kunci
Metode beginDeleteKey
memulai penghapusan kunci.
Proses ini akan terjadi di latar belakang segera setelah sumber daya yang diperlukan tersedia.
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();
Jika penghapusan sementara diaktifkan untuk Key Vault, operasi ini hanya akan memberi label kunci sebagai kunci yang dihapus. Kunci yang dihapus tidak dapat diperbarui. Mereka hanya dapat dibaca, dipulihkan, atau dibersihkan.
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();
Karena Keys membutuhkan waktu untuk dihapus sepenuhnya, beginDeleteKey
mengembalikan objek Poller yang melacak Operasi Jangka Panjang yang mendasar sesuai dengan pedoman kami: https://azure.github.io/azure-sdk/typescript_design.html#ts-lro
Poller yang diterima akan memungkinkan Anda untuk mendapatkan kunci yang dihapus dengan memanggil ke poller.getResult()
.
Anda juga dapat menunggu hingga penghapusan selesai baik dengan menjalankan panggilan layanan individual hingga kunci dihapus, atau dengan menunggu hingga proses selesai:
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();
Cara lain untuk menunggu hingga kunci sepenuhnya dihapus adalah dengan melakukan panggilan individual, sebagai berikut:
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();
Mengonfigurasi Rotasi Kunci Otomatis
Dengan menggunakan KeyClient, Anda dapat mengonfigurasi rotasi kunci otomatis untuk kunci dengan menentukan kebijakan rotasi. Selain itu, KeyClient menyediakan metode untuk memutar kunci sesuai permintaan dengan membuat versi baru dari kunci yang diberikan.
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();
Iterasi daftar kunci
Dengan menggunakan KeyClient, Anda dapat mengambil dan melakukan iterasi melalui semua kunci di azure Key Vault, serta melalui semua kunci yang dihapus dan versi kunci tertentu. Metode API berikut tersedia:
listPropertiesOfKeys
akan mencantumkan semua kunci Anda yang tidak dihapus berdasarkan namanya, hanya pada versi terbarunya.listDeletedKeys
akan mencantumkan semua kunci Anda yang dihapus berdasarkan namanya, hanya pada versi terbarunya.listPropertiesOfKeyVersions
akan mencantumkan semua versi kunci berdasarkan nama kunci.
Yang dapat digunakan sebagai berikut:
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();
Semua metode ini akan mengembalikan semua hasil yang tersedia sekaligus. Untuk mengambilnya berdasarkan halaman, tambahkan .byPage()
tepat setelah memanggil metode API yang ingin Anda gunakan, sebagai berikut:
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();
Kriptografi
Pustaka ini juga menawarkan serangkaian utilitas kriptografi yang tersedia melalui CryptographyClient
. Mirip KeyClient
dengan , CryptographyClient
akan terhubung ke Azure Key Vault dengan sekumpulan kredensial yang disediakan. Setelah tersambung, CryptographyClient
dapat mengenkripsi, mendekripsi, menandatangani, memverifikasi, membungkus kunci, dan membongkar kunci.
Selanjutnya kita dapat terhubung ke layanan brankas kunci seperti yang KeyClient
kita lakukan dengan .
Kita harus menyalin beberapa pengaturan dari brankas kunci yang kita sambungkan ke variabel lingkungan kita. Setelah mereka berada di lingkungan kita, kita dapat mengaksesnya dengan kode berikut:
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
akan mengenkripsi pesan.
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
akan mendekripsi pesan terenkripsi.
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();
Menandatangani
sign
akan menandatangani hash pesan secara kriptografis dengan tanda tangan.
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();
Tanda tangani Data
signData
akan menandatangani pesan secara kriptografis dengan tanda tangan.
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();
Verifikasi
verify
akan memverifikasi secara kriptografis bahwa hash yang ditandatangani ditandatangani dengan tanda tangan yang diberikan.
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();
Memverifikasi Data
verifyData
akan memverifikasi secara kriptografis bahwa pesan yang ditandatangani ditandatangani dengan tanda tangan yang diberikan.
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();
Bungkus Kunci
wrapKey
akan membungkus kunci dengan lapisan enkripsi.
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();
Buka Bungkus Kunci
unwrapKey
akan membongkar kunci yang dibungkus.
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();
Pemecahan Masalah
Lihat panduan pemecahan masalah kami untuk detail tentang cara mendiagnosis berbagai skenario kegagalan.
Mengaktifkan pengelogan dapat membantu menemukan informasi yang berguna tentang kegagalan. Untuk melihat log permintaan dan respons HTTP, atur variabel lingkungan AZURE_LOG_LEVEL
ke info
. Atau, pengelogan dapat diaktifkan saat runtime dengan memanggil setLogLevel
di @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Langkah berikutnya
Anda dapat menemukan lebih banyak sampel kode melalui tautan berikut:
- Sampel Kunci Key Vault (JavaScript)
- Sampel Kunci Key Vault (TypeScript)
- Key Vault Kasus Pengujian Kunci
Berkontribusi
Jika Anda ingin berkontribusi pada pustaka ini, baca panduan berkontribusi untuk mempelajari selengkapnya tentang cara membuat dan menguji kode.
Azure SDK for JavaScript