通过Azure REST API查询Application Insights时获取Token遇权限问题
问题分析与解决方法
核心问题:用错了凭证类型
你混淆了两种不同的身份验证逻辑:
- Azure Application Insights API Access面板生成的API密钥+Application ID,是用于直接调用旧版Application Insights REST API的凭证,不需要走Azure AD OAuth2流程。
- 你参考的OAuth2客户端凭证流,需要的是Azure AD应用注册的client_id和client_secret,不是AI面板里的那组信息。错误提示里的“AADSTS700016”就是因为AAD找不到你传入的“Application ID”——这个ID是AI资源的标识,不是AAD注册应用的标识。
解决方案一:改用AAD应用注册完成OAuth2认证
- 创建AAD应用注册
- 登录Azure门户,进入“Azure Active Directory”→“应用注册”→“新注册”,创建一个新应用。
- 记录该应用的应用程序(客户端)ID,这就是你需要的
client_id。
- 分配权限并获取管理员同意
- 在应用注册的“API权限”页面,点击“添加权限”→选择“Azure Application Insights”→勾选“Application Insights Data Reader”权限。
- 点击“授予管理员同意”,完成权限生效。
- 生成客户端密码(client_secret)
- 进入应用注册的“证书和密码”页面,点击“新建客户端密码”,设置过期时间后生成,记录这个密码值(只会显示一次)。
- 修正Postman参数
- 将
client_id替换为AAD应用注册的应用程序ID - 将
client_secret替换为刚生成的客户端密码 - 其余参数(url、tenant、scope、grant_type)保持不变,重新请求即可获取有效令牌。
- 将
解决方案二:直接使用AI API密钥调用(无需OAuth)
如果不需要走AAD认证,可直接用AI API密钥调用旧版API:
- 请求头添加:
Authorization: ApiKey <你的AI API密钥> - 请求URL格式:
https://api.applicationinsights.io/v1/apps/<AI资源的Application ID>/query - 直接发送查询请求即可。
内容的提问来源于stack exchange,提问作者FunkMonkey33
相关产品推荐
相关产品推荐

