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

标签 node.js azure azure-keyvault azure-node-sdk

在 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/

相关文章:

Azure 应用服务 Java - 发布上传请求因大小而失败

Azure Key Vault 从 VMSS 实例获取 secret

c++ - 错误 MSB8007 : The Platform for project XXX is invalid. 平台 ='x64'

javascript - Passport 的注销功能会删除 cookie 吗?如果没有,它是如何工作的?

azure - 创建 Azure 存储资源时,默认/选定的区域是随机的还是计算出的建议?

azure - 如何通过事件中心在 ARM 模板中使用 listkeys 函数

c# - 如何从 Azure Key Vault 获取 VaultProperties.NetworkAcls 属性

javascript - Socket.io 发出特殊字符

node.js - 使用 nodejs & redis & socket.io & php 的实时访问者

.net - Azure Functions 中 StartNewAsync 和 CallActivityAsync 之间有什么区别