我正在使用 Azure 应用程序服务 api 查看服务器详细信息,例如工作进程和区域等,以进行管理。从 AuthenticationContext.AcquireTokenAsync 方法生成 token 后,我请求以下 URL 以获取服务器详细信息 https://management.azure.com/subscriptions/<sub ID>/resourceGroups/<资源组名称>/providers/Microsoft.Web/serverfarms/?api-version=2018-02-01
在响应中,我收到 AuthorizationFailed 错误代码,详细信息如下:
The client does not have authorization to perform action 'Microsoft.Web/serverfarms/read' over scope '/subscriptions/xxxxxxxx-xxxxxxx-xxxx/resourceGroups/xxxxxxxxxxx/providers/Microsoft.Web/serverfarms/xxxx' or the scope is invalid. If access was recently granted, please refresh your credentials.
但是当我尝试使用 https://learn.microsoft.com/en-us/rest/api/appservice/appserviceenvironments/get 进行相同的验证时 门户,我可以在其中尝试 API 进行测试,请求返回预期结果。
那么,是否有其他方法进行身份验证,或者我是否应该定义一些权限来实现该功能?
最佳答案
您使用的服务主体在该租户中没有权限。
租户拥有订阅,服务主体属于租户。 Azure 资源管理器还公开给定主体的基于角色的授权,这将赋予其对 Azure 资源的权限。服务主体似乎无权读取该订阅。
转至门户并找到您的订阅
,单击访问控制 (IAM)
,然后使用 单击
。添加角色分配
对应您用来获取 token 的服务主体
成功授予权限后,刷新并重试。
关于azure - 具有对象 ID 的客户端无权在范围内执行操作 'Microsoft.Web/serverfarms/read',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58302209/