我正在尝试使用Active Directory应用程序注册访问我的资源的本地主机(http://localhost:8100)Ionic webapp中的指标数据。
我的管理员为我的本地主机应用程序创建了新的应用程序注册,从而可以请求新的Bearer访问令牌。
收到访问令牌后,我想让应用程序使用此访问令牌来请求指标数据。
我的Web应用程序用来调用指标(http GET请求)的网址之一是:
"https://management.azure.com/subscriptions/{subscription_id}/resourceGroups/{resourcegroup_name}/providers/Microsoft.Compute/virtualMachines/{VirtualMachine_name}/providers/microsoft.insights/metrics?api-version=2018-01-01&metricnames=Percentage%20CPU×pan=2018-10-16T03:00:00Z/2018-10-17T03:00:00Z"
标头:
Authorization: {Bearer access_token},
Content-Type: 'application/json'
不幸的是,发送此get请求后,它返回错误"AuthorizationFailed"
(http错误代码403),并显示以下消息:
"The client '{client id}' with object id '{same as client id}' does not have authorization to perform action 'microsoft.Insights/metrics/read' over scope '/subscriptions/{subscription_id}/resourceGroups/{resourcegroup_name}/providers/Microsoft.Compute/virtualMachines/{VirtualMachine_name}/providers/microsoft.Insights'."
这里出了什么问题?
答案 0 :(得分:1)
我解决了该问题,因为我注意到Active Directory中注册的应用程序没有授予的角色。
我通过导航至subscription
窗口,然后导航至Access control (IAM)
选项卡,为此应用程序授予了角色。在此选项卡中,我添加了在Active Directory应用程序注册中声明的应用程序,并被授予角色reader
。
自从我保存设置以来,就不再出现AuthorizationFailed
错误。