Node.js 是否有类似AzureServiceTokenProvider的节点?可以处理多种身份验证机制的东西?
在C#中,我可以使用AzureServiceTokenProvider,它允许我以多种方式访问Azure密钥库。如果我在本地运行,它将使用我的凭据,如果我在Azure中运行,它将使用MSI,它将查找环境变量,等等。这真的很好,因为我不需要编写代码来处理在具有不同身份验证机制的各种环境中运行的情况 我似乎找不到像这样的节点。看起来我必须编写代码来执行交互式登录、MSI、环境变量等。是否有类似AzureServiceTokenProvider的节点?处理各种身份验证方案的东西?使用ms rest azure的方法将自动检测您是否在Web应用程序上,并从MSI端点获取令牌。那么,代码就是: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
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),然后是交互式浏览器。您可以在此处阅读更多内容: