fastify-secrets-azure
Version:
Fastify secrets plugin for Azure Key Vault
48 lines (38 loc) • 1.03 kB
JavaScript
const {
DefaultAzureCredential,
ClientSecretCredential
} = require('@azure/identity')
const { SecretClient } = require('@azure/keyvault-secrets')
function assertOptions(options) {
if (!options || !options.vaultName) {
throw new Error('fastify-secrets-azure: `vaultName` is required')
}
}
class AzureClient {
constructor(options) {
assertOptions(options)
const vaultName = options.vaultName
const credentials = options.credentials
const credential = credentials
? new ClientSecretCredential(
credentials.tenantId,
credentials.clientId,
credentials.clientSecret
)
: new DefaultAzureCredential()
this.secretClient = new SecretClient(
`https://${vaultName}.vault.azure.net`,
credential
)
}
async get(name) {
try {
const secret = await this.secretClient.getSecret(name)
return secret.value
} catch {
throw new Error(`Secret not found: ${name}`)
}
}
}
module.exports = AzureClient