首页 > 解决方案 > 具有对象 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 进行测试,请求返回预期结果。

那么,是否有任何其他方式来进行身份验证,或者我是否应该定义一些权限来实现该功能?

标签: azureapiauthentication

解决方案


您正在使用的服务主体在该租户中没有权限。

租户有订阅,服务主体属于租户。Azure 资源管理器还公开给定主体的基于角色的授权,这将赋予它对 Azure 资源的权限。服务主体似乎无权读取该订阅。

转到门户并找到您的subscription,单击,Access Control (IAM)然后单击您用来获取令牌的。Add role assignmentcorrespond service principal

授予成功权限后,刷新并重试。


推荐阅读