使用AAD在应用程序Insights REST API上进行身份验证

使用AAD在应用程序Insights REST API上进行身份验证,rest,api,authentication,azure-application-insights,Rest,Api,Authentication,Azure Application Insights,到目前为止,我成功地使用ApplicationInsightsRESTAPI获取带有X-API-Key头的指标。 然而,通过我们的新仪表板,爬行了几个指标,我们很难达到1500请求/api密钥限制 有些人建议使用几个api键,但我想阻止这种方法 根据文件,通过AAD认证将取消每日上限() 但我无法使用AAD进行身份验证(在nodejs中,但我怀疑在任何语言中都是一样的) 我在一个简单的应用程序中使用了adal节点,我成功地获得了一个令牌,但是我无法将它转发到请求 var context = n

到目前为止,我成功地使用ApplicationInsightsRESTAPI获取带有X-API-Key头的指标。

然而,通过我们的新仪表板,爬行了几个指标,我们很难达到1500请求/api密钥限制

有些人建议使用几个api键,但我想阻止这种方法

根据文件,通过AAD认证将取消每日上限()

但我无法使用AAD进行身份验证(在nodejs中,但我怀疑在任何语言中都是一样的)

我在一个简单的应用程序中使用了
adal节点
,我成功地获得了一个令牌,但是我无法将它转发到
请求

var context = new AuthenticationContext(authorityUrl);

context.acquireTokenWithClientCredentials(resource, clientId, clientSecret, function(err, tokenResponse) {
  if (err) {
    console.log('well that didn\'t work: ' + err.stack);
  } else {
    console.log(tokenResponse);

    request({'url' : 'https://api.applicationinsights.io/beta/apps/xxxxxxxxx/metrics/customMetrics%2Fmetrics?timespan=PT2H&interval=PT20M&aggregation=min',
    headers: {
            'Authorization': 'Bearer ' + tokenResponse.accessToken
        }
    }, function (error,response,body){
            console.log(body);
    });
  }
});

我收到以下错误消息
提供的身份验证对此资源无效
给定的API密钥对于请求的资源无效


我怀疑我遗漏了什么:)

我们不直接在RESTAPI中支持AAD。您的资源由Azure资源管理器管理,只有它才能验证某个用户有权访问此资源。API密钥是我们直接将授权短路到资源的方式,而不是在用户上下文中

您已授予此AAD应用程序以您自己的身份访问此资源,因此身份验证仍在用户的上下文中。必须改为调用ARM:“”

此处链接了文档-尽管没有明确解释:


这将使您获得更高的速率限制,并且仍然返回与REST API相同的响应。

Ah!我完全错过了这个文档页面(我以为它只是一个章节标题…),但我知道我错过了一些东西!我会尽快尝试一下。文档参考了连接ARM和执行ARMQuery,据我所知,这是从这里()来的,2年来没有维护过。这是否正确?这对meHi有效?您是否找到了解决方案?目前还没有,我对如何使用文档中描述的powershell命令(请参见下面的答案)有点困惑。目前,我正在用一组APIKEY作弊:(我最终使用Azure日志分析查询同时针对多个指标来解决限制问题。