1

我已将 nodeJs 应用程序部署到 Linux Azure AppService。现在我想列出同一个应用服务的服务器设置。在Identity选项卡下,我为此 AppService 启用了托管标识。在我的 NodeJs 应用程序中,我尝试了以下操作:

const { DefaultAzureCredential } = require("@azure/identity");

const credential = new DefaultAzureCredential();

credential.getToken().then(token => {
  ...
});

我不确定这是在做什么,但我认为它没有联系,因为getToken永远不会解决。有什么建议我在这里缺少的吗?

4

1 回答 1

1

如果您想在应用服务中获取服务器设置值,您可以process.env.NODE_ENV按照此文档的指示尝试。而不是调用 Azure 管理 API。

如果您想在应用服务之外获取服务器设置值,您的代码无法直接访问服务器设置值,因此您应该调用 Azure 管理 API。如果你有什么问题DefaultAzureCredential,你可以试试ClientSecretCredential。只需尝试以下代码:

const { ClientSecretCredential } = require("@azure/identity");

const fetch = require("node-fetch")

let  tenantId='';
let  clientID = '';
let clientSecret = '';

let subscriptionID = ''
let resourceGroup = ''
let appServiceName = ''

new ClientSecretCredential(tenantId,clientID,clientSecret).getToken(['https://management.azure.com/.default']).then(result=>{
    accessToken = result.token
    reqURL = `https://management.azure.com/subscriptions/${subscriptionID}/resourceGroups/${resourceGroup}/providers/Microsoft.Web/sites/${appServiceName}/config/appsettings/list?api-version=2019-08-01`
    fetch(reqURL, {
        method: 'post',
        headers: { 'Authorization': 'Bearer ' +  accessToken},
    })
    .then(res => res.json())
    .then(json => console.log(json));

})

结果 :

在此处输入图像描述 在此处输入图像描述

有关如何创建 Azure AD 应用并为其分配角色以使其有权调用 Azure 管理 API,请参阅此文档

于 2021-06-02T02:17:16.757 回答