azure - 具有对象 ID 的客户端无权在范围内执行操作 'Microsoft.Web/serverfarms/read'

标签 azure api authentication

我正在使用 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/

相关文章:

c# - ASP.NET 登录控件,使用电子邮件登录但电子邮件不是用户名(如何)?

rest - 通过 CLI 或 Rest 添加 Artifactory 存储库

Azure 表存储相当于 SQL "IN"

python - 如何安排实验在 Azure ML SDK 中每天运行

mongodb - 在 Azure 数据工厂中创建 MongoDB 链接服务

python - 如何获取从副本创建的新文件夹/工作表的 ID?

api - global_merge_vars 不起作用

mysql c api : inserting numbers without converting them to a string

authentication - Web 应用程序的 PIN 码身份验证

Azure Service Fabric 自动升级