gpt4 book ai didi

node.js - Node 有类似 AzureServiceTokenProvider 的东西吗?可以处理多种身份验证机制的东西吗?

转载 作者:行者123 更新时间:2023-12-03 05:40:52 25 4
gpt4 key购买 nike

在 C# 中,我可以使用 AzureServiceTokenProvider,它允许我以多种方式访问​​ Azure Key Vault。如果我在本地运行,它将使用我的凭据,如果我在 Azure 中运行,它将使用 MSI,它将查找环境变量等。这真的很好,因为我不需要编写代码来处理在各种环境具有不同的身份验证机制。

我似乎找不到类似的 Node 。看起来我必须编写代码来进行交互式登录、MSI、环境变量等。 Node 有类似 AzureServiceTokenProvider 的东西吗?处理各种身份验证场景的东西?

最佳答案

使用loginWithAppServiceMSI() ms-rest-azure 中的方法将自动检测您是否在 Web 应用程序上,并从 MSI 端点获取 token 。那么,代码很简单:

    function getKeyVaultCredentials(){
return msRestAzure.loginWithAppServiceMSI({resource: 'https://vault.azure.net'});
}

function getKeyVaultSecret(credentials) {
let keyVaultClient = new KeyVault.KeyVaultClient(credentials);
return keyVaultClient.getSecret(KEY_VAULT_URI, 'secret', "");
}

getKeyVaultCredentials().then(
getKeyVaultSecret
).then(function (secret){
console.log(`Your secret value is: ${secret.value}.`);
}).catch(function (err) {
throw (err);
});

如果您需要一个后备机制来允许此代码自动从 MSI 切换到另一种方法,您可以测试环境变量:

function getKeyVaultCredentials(){
if (process.env.APPSETTING_WEBSITE_SITE_NAME){
return msRestAzure.loginWithAppServiceMSI({resource: 'https://vault.azure.net'});
} else {
return msRestAzure.loginWithServicePrincipalSecret(clientId, secret, domain);
}
}

关于node.js - Node 有类似 AzureServiceTokenProvider 的东西吗?可以处理多种身份验证机制的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58848333/

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