Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 是否有类似AzureServiceTokenProvider的节点?可以处理多种身份验证机制的东西?_Node.js_Azure_Azure Keyvault_Azure Node Sdk - Fatal编程技术网

Node.js 是否有类似AzureServiceTokenProvider的节点?可以处理多种身份验证机制的东西?

Node.js 是否有类似AzureServiceTokenProvider的节点?可以处理多种身份验证机制的东西?,node.js,azure,azure-keyvault,azure-node-sdk,Node.js,Azure,Azure Keyvault,Azure Node Sdk,在C#中,我可以使用AzureServiceTokenProvider,它允许我以多种方式访问Azure密钥库。如果我在本地运行,它将使用我的凭据,如果我在Azure中运行,它将使用MSI,它将查找环境变量,等等。这真的很好,因为我不需要编写代码来处理在具有不同身份验证机制的各种环境中运行的情况 我似乎找不到像这样的节点。看起来我必须编写代码来执行交互式登录、MSI、环境变量等。是否有类似AzureServiceTokenProvider的节点?处理各种身份验证方案的东西?使用ms rest a

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

我似乎找不到像这样的节点。看起来我必须编写代码来执行交互式登录、MSI、环境变量等。是否有类似AzureServiceTokenProvider的节点?处理各种身份验证方案的东西?

使用ms rest azure的方法将自动检测您是否在Web应用程序上,并从MSI端点获取令牌。那么,代码就是:

    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);
  }
}
使用ms rest azure的方法将自动检测您是否在Web应用程序上,并从MSI端点获取令牌。那么,代码就是:

    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);
  }
}

较旧的软件包
azure keyvault
将要求您使用
ms rest azure
软件包创建凭证/令牌提供程序,而不使用回退选项

azure keyvault
现已被弃用,取而代之的是分别通过
@azure/keyvault keys
@azure/keyvault secrets
@azure/keyvault certificates
处理keyvault密钥、机密和证书的新软件包


这些包从新的
@azure/identity
包获取凭据。其中一个凭证是
DefaultAzureCredential
,它具有您正在寻找的回退机制。有关更多详细信息,请参见较旧的软件包
azure keyvault
将要求您使用
ms rest azure
软件包创建凭证/令牌提供程序,而不使用回退选项

azure keyvault
现已被弃用,取而代之的是分别通过
@azure/keyvault keys
@azure/keyvault secrets
@azure/keyvault certificates
处理keyvault密钥、机密和证书的新软件包


这些包从新的
@azure/identity
包获取凭据。其中一个凭证是
DefaultAzureCredential
,它具有您正在寻找的回退机制。有关更多详细信息,请参见

谢谢-我希望有一个内置的机制,这样我就不需要做所有的回退工作。似乎没有没有没有回退的机制。谢谢-我希望有一个内置的机制,这样我就不需要做所有的回退工作。似乎没有没有没有没有回退的机制。有什么问题吗现在处理吗?恐怕不行。我计划手动执行回退工作。有了新的Azure SDK,您可以使用DefaultAzureCredential,它在内部搜索环境变量,然后是托管标识,然后是开发工具(VS),然后是交互式浏览器。你可以在这里读到更多:现在有流程吗?恐怕没有。我计划手动执行回退工作。有了新的Azure SDK,您可以使用DefaultAzureCredential,它在内部搜索环境变量,然后是托管标识,然后是开发工具(VS),然后是交互式浏览器。您可以在此处阅读更多内容: