gpt4 book ai didi

node.js - 如何在 Node 中使用 Azure 托管服务标识访问 Key Vault?

转载 作者:搜寻专家 更新时间:2023-10-30 21:08:21 26 4
gpt4 key购买 nike

我按照指示here进行操作创建托管服务身份。所以现在在我的环境变量中,我有 MSI_ENDPOINT 和 MSI_SECRET。

在我的 typescript (node.js) 项目中,我导入了以下项目:

import {KeyVaultCredentials, KeyVaultClient} from "azure-keyvault";
import {AuthenticationContext, ErrorResponse, TokenResponse} from "adal-node";

如果我没有使用 MSI,我可以使用以下代码访问我的 key 保管库:

let keyVaultCredentials = new KeyVaultCredentials(KeyVault.createAuthenticator(this.clientID, this.clientKey));
let keyVaultClient = new KeyVaultClient(keyVaultCredentials);
private static createAuthenticator(clientID: string, clientKey: string){
return (challenge, callback) => {
let context = new AuthenticationContext(challenge.authorization);
return context.acquireTokenWithClientCredentials(
challenge.resource,
clientID,
clientKey,
function (err, tokenResponse:TokenResponse | ErrorResponse) {
if (err) {
CLogger.log("error", "Error occurred while acquiring token with key vault credentials: " + JSON.stringify(err));
throw new Error("Error occurred while acquiring token with key vault credentials. Check log files");
}
if(<TokenResponse>tokenResponse){
let authorizationValue = (<TokenResponse>tokenResponse).tokenType + " " + (<TokenResponse>tokenResponse).accessToken;
return callback(null, authorizationValue);
}
});
}
}

我不知道如何在启用 MSI 的情况下获取访问 token ,请帮忙。

最佳答案

借助新的 Azure SDK for js,您可以通过实现包 @azure/identity 中的类 DefaultAzureCredential,使用托管服务对您的应用程序进行身份验证。

const {DefaultAzureCredential} = require('@azure/identity');
const {SecretClient} = require('@azure/keyvault-secrets');

const credential = new DefaultAzureCredential();

const vaultName = "<key-vault-name>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new SecretClient(url, credential);

client.setSecret(secretName, "MySecretValue");
........

它支持服务主体和托管身份验证。

要在本地环境中运行它,您必须设置三个环境变量:AZURE_TENANT_ID、AZURE_CLIENT_ID 和 AZURE_CLIENT_SECRET,以便能够与服务主体连接。

在 Azure 上,如果未定义这些变量,它将尝试使用托管身份进行身份验证。

有一个快速入门指南here .

关于node.js - 如何在 Node 中使用 Azure 托管服务标识访问 Key Vault?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48630804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com