@eqxjs/azure-manage-dentity (英语)
一个TypeScript库,用于使用Azure管理的身份管理 Azure Key Vault 机密和加密操作.
节点 : >=22
说明
这个库提供了一个简单的接口,与Azure Key Vault进行互动,用于秘密管理,JWT令牌验证/签名,以及数据加密/解密操作. 它使用Azure的"默认Azure证书"来进行有被管理身份的无缝认证.
安装
npm install @eqxjs/azure-manage-identity
特征
- 秘密管理: 获取、设置、列出并删除 Azure 密钥
- JWT业务: 使用 Azure 密钥断层键验证并签名 JWT 令牌
- 数据加密: 使用 Azure 密钥对数据进行加密和解密
- 管理身份: 使用 Azure 管理的身份自动认证
职能
秘密管理
getSecret(keyvaultURL: string, secretName: string, secretOpt?: GetSecretOptions)
从Azure Key Vault处获取一个秘密.
参数:
keyvaultURL- Azure 键断层的URL(例如,https://your-keyvault.vault.azure.net/(中文(简体) )secretName- 取回的秘密名称secretOpt- 获取秘密的可选设置
回返情况: Promise<KeyVaultSecret>
示例
import { getSecret } from '@eqxjs/azure-manage-identity';
const secret = await getSecret(
'https://your-keyvault.vault.azure.net/',
'my-secret',
);
console.log(secret.value);
setSecret(keyvaultURL: string, secretName: string, secretValue: string, secretOpt?: SetSecretOptions)
在 Azure 密钥断层中创建或更新密钥 .
参数:
keyvaultURL- Azure 键断层的 URLsecretName- 要设置的秘密名称secretValue- 隐藏在秘密中的价值secretOpt- 设置秘密的可选设置
回返情况: Promise<KeyVaultSecret>
示例
import { setSecret } from '@eqxjs/azure-manage-identity';
const secret = await setSecret(
'https://your-keyvault.vault.azure.net/',
'my-secret',
'my-secret-value',
);
listSecretVersion(keyvaultURL: string, secretName: string, secretOpt?: ListPropertiesOfSecretVersionsOptions)
列出特定秘密的所有版本.
参数:
keyvaultURL- Azure 键断层的 URLsecretName- 秘密的名称secretOpt- 列出秘密版本的可选设置
回返情况: PagedAsyncIterableIterator<SecretProperties>
示例
import { listSecretVersion } from '@eqxjs/azure-manage-identity';
const versions = await listSecretVersion(
'https://your-keyvault.vault.azure.net/',
'my-secret',
);
for await (const version of versions) {
console.log(version.version);
}
removeSecret(keyvaultURL: string, secretName: string, secretOpt?: BeginDeleteSecretOptions, clientOptions?: SecretClientOptions)
从 Azure 密钥断层中删除密钥并等待删除完成 .
参数:
keyvaultURL- Azure 键断层的 URLsecretName- 要删除的秘密名称secretOpt- 删除操作的可选设置clientOptions- 保密客户端的可选配置
回返情况: Promise<DeletedSecret>
示例
import { removeSecret } from '@eqxjs/azure-manage-identity';
const deleted = await removeSecret(
'https://your-keyvault.vault.azure.net/',
'my-secret',
);
console.log(deleted.deletedOn);
JWT 调试操作
verifyJWTToken(keyURL: string, keyName: string, algorithm: string, jwtToken: string)
使用 Azure 密钥密钥验证 JWT 令牌 .
参数:
keyURL- Azure 键断层的 URLkeyName- 用于核查的密钥名称algorithm- 签名算法(例如“RS256”)jwtToken- JWT证明书
回返情况: Promise<VerifyResult>
示例
import { verifyJWTToken } from '@eqxjs/azure-manage-identity';
const result = await verifyJWTToken(
'https://your-keyvault.vault.azure.net/',
'my-key',
'RS256',
'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...',
);
console.log(result.result); // true or false
verifyJWTTokenBySecret(keyURL: string, secretName: string, jwtToken: string)
使用存储在 Azure Key Vault 的公钥验证 JWT 令牌。 支持JWKS(JSON Web Key Set)格式.
参数:
keyURL- Azure 键断层的 URLsecretName- 包含公用钥匙/JWKS的秘密名称jwtToken- JWT证明书
回返情况: Promise<VerifyResult>
示例
import { verifyJWTTokenBySecret } from '@eqxjs/azure-manage-identity';
const result = await verifyJWTTokenBySecret(
'https://your-keyvault.vault.azure.net/',
'jwks-secret',
'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...',
);
signJWTToken(keyURL: string, keyName: string, algorithm: string, payload: string)
使用 Azure 密钥密钥签署 JWT 有效载荷.
参数:
keyURL- Azure 键断层的 URLkeyName- 用于签名的密钥名称algorithm- 签名算法(例如“RS256”)payload- 签字的有效载荷
回返情况: Promise<string> - Base64URL编码签名
示例
import { signJWTToken } from '@eqxjs/azure-manage-identity';
const signature = await signJWTToken(
'https://your-keyvault.vault.azure.net/',
'my-key',
'RS256',
'header.payload',
);
数据加密/解密
encryptData(keyURL: string, keyName: string, payload: string, ivSecretName: string)
使用AES-256-CBC加密数据,并使用Azure键断层键加密数据.
参数:
keyURL- Azure 键断层的 URLkeyName- 用于加密的密钥名称payload- 要加密的数据ivSecretName- 包含初始化矢量的秘密名称(IV)
回返情况: Promise<string> - Base64URL编码加密数据
示例
import { encryptData } from '@eqxjs/azure-manage-identity';
const encrypted = await encryptData(
'https://your-keyvault.vault.azure.net/',
'encryption-key',
'sensitive data',
'iv-secret',
);
decryptData(keyURL: string, keyName: string, payloadBase64: string, ivSecretName: string)
使用AES-256-CBC加密加密的数据解密.
参数:
keyURL- Azure 键断层的 URLkeyName- 用于解密的密钥名称payloadBase64- Base64URL加密数据ivSecretName- 包含初始化矢量的秘密名称(IV)
回返情况: Promise<string> - 已解密的纯文本数据
示例
import { decryptData } from '@eqxjs/azure-manage-identity';
const decrypted = await decryptData(
'https://your-keyvault.vault.azure.net/',
'encryption-key',
'base64url-encoded-ciphertext',
'iv-secret',
);
认证
这个图书馆使用Azure的 DefaultAzureCredential 用于认证,自动处理:
- 管理身份(用于Azure托管的应用程序)
- Azure CLI 证书
- 环境变量
- 视觉工作室代码证书
- 其他Azure认证方法
确保您的应用程序有访问 Azure 密钥断层资源的适当权限 .
需要的 Azure 密钥断层权限
您管理的身份或服务主机需要以下权限:
对于秘密行动 :
Get- 读取秘密Set- 创造/更新秘密List- 列出秘密版本Delete- 清除秘密
对于密钥操作 :
Get- 找回钥匙Sign- 签署数据/JWT标志Verify- 核查签名Encrypt- 加密数据Decrypt- 解密数据
依赖关系
这个库取决于:
@azure/identity- Azure认证@azure/keyvault-keys- 关键断层关键操作@azure/keyvault-secrets- 关键断层秘密行动jsonwebtoken- JWT业务base64url- 基础64URL编码/解码
许可证
公务员制度委员会
作者
精华