gpt4 book ai didi

node.js - 如何通过 https 请求从 Node 调用 Azure 客户端?

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:00 25 4
gpt4 key购买 nike

我已在 Azure 中启动并运行 VM。我想从 Node 调用 Azure VM。我完全不知道 Azure 的 get API。那么如何才能实现这一点呢?

我有租户 ID、客户端 ID、客户端 key 和订阅 ID。

此外,我可以从运行 VM 中获得什么独特的东西,如果我在 Azure 上创建另一个 VM,这些东西将是相同的吗?

最佳答案

考虑到您在环境变量中具有访问保管库的值以从 azure 保管库获取 secret ,请尝试此操作:

var _ = require('lodash'),
msRestAzure = require('ms-rest-azure'),
KeyVault = require('azure-keyvault'),
AuthenticationContext = require('adal-node').AuthenticationContext,//Utility function to get key vault client

function getKeyVaultClient() {
// service principal details to access the vault
var clientId = process.env['CLIENT_ID']; // service principal
var domain = process.env['DOMAIN']; // tenant id
var secret = process.env['APPLICATION_SECRET'];
return new Promise(function (resolve, reject) {
msRestAzure.loginWithServicePrincipalSecret(clientId, secret, domain, function (err) {
if (err) {
return reject(err);
}
// authenticate with key vault with a service principal
var kvCredentials = new KeyVault.KeyVaultCredentials(authenticator);
keyVaultClient = new KeyVault.KeyVaultClient(kvCredentials);
return resolve(keyVaultClient);
});
})
}

function authenticator(challenge, callback) {
// service principal details to access the vault
var clientId = process.env['CLIENT_ID']; // service principal
var secret = process.env['APPLICATION_SECRET'];
// Create a new authentication context.
var context = new AuthenticationContext(challenge.authorization);

// Use the context to acquire an authentication token.
return context.acquireTokenWithClientCredentials(challenge.resource, clientId, secret, function (err, tokenResponse) {
if (err) {
return callback(err);
}
// Calculate the value to be set in the request's Authorization header and resume the call.
var authorizationValue = tokenResponse.tokenType + ' ' + tokenResponse.accessToken;

return callback(null, authorizationValue);
});
}

var vaultUri = 'https://' + process.env['VAULT_NAME'] + '.vault.azure.net/secrets/' + key;
getKeyVaultClient().then(function (vaultClient) {
vaultClient.getSecret(vaultUri,
function (err, result) {
if (err) {
return reject(err);
} else {
return resolve(result.value);
}
});
}).catch(function (err) {
reject(err);
})

您可以查看官方文档和示例,了解如何使用 azure 公开的 Rest API 访问 key 和 secret 。

关于node.js - 如何通过 https 请求从 Node 调用 Azure 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51063614/

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