azure - 具有对象 ID 的客户端无权在范围内执行操作“Microsoft.Web/serverfarms/read”
问题描述
我正在使用 Azure 应用服务 api 来查看服务器详细信息,例如工作进程和区域等,以进行管理。从AuthenticationContext.AcquireTokenAsync方法生成令牌后,我请求以下 URL 获取服务器详细信息https://management.azure.com/subscriptions/<sub ID>/resourceGroups/<resource group name>/providers/Microsoft.Web/serverfarms/ ?api-version=2018-02-01
在响应中,我收到AuthorizationFailed错误代码,详细信息如下:
客户端无权在范围“/subscriptions/xxxxxxxx-xxxxxxx-xxxx/resourceGroups/xxxxxxxxxxx/providers/Microsoft.Web/serverfarms/xxxx”上执行操作“Microsoft.Web/serverfarms/read”或范围无效。如果最近授予访问权限,请刷新您的凭据。
但是,当我使用https://docs.microsoft.com/en-us/rest/api/appservice/appserviceenvironments/get门户尝试相同的验证时,我可以尝试 API 进行测试,请求返回预期结果。
那么,是否有任何其他方式来进行身份验证,或者我是否应该定义一些权限来实现该功能?
解决方案
您正在使用的服务主体在该租户中没有权限。
租户有订阅,服务主体属于租户。Azure 资源管理器还公开给定主体的基于角色的授权,这将赋予它对 Azure 资源的权限。服务主体似乎无权读取该订阅。
转到门户并找到您的subscription
,单击,Access Control (IAM)
然后单击您用来获取令牌的。Add role assignment
correspond service principal
授予成功权限后,刷新并重试。
推荐阅读
- android - Ktor:有效 JSON 上的 JsonDecodingException
- javascript - POST 请求在 Android 9 中返回错误 (JAVASCRIPT / CORDOVA / PHONEGAP )
- laravel - 如何使用控制器操作最小化 axios 帖子
- javascript - 如何将输入文本内容传递给变量
- node.js - 我如何使用 adonis/node.js 在 leftJoin 中做出区分?
- amazon-web-services - Count running instances using specific AMI as Cloudwatch metric
- python - 是否有任何特定的指标或方法可以删除 TF IDF 词汇的尾部?
- android - ShareIt 如何创建和配置热点
- php - ApiPlatform:如何返回完整对象而不是仅返回部分对象
- android - 可绘制的Android绑定?