【发布时间】:2017-08-11 11:14:36
【问题描述】:
我需要创建一个脚本,该脚本将以编程方式调用 Azure HDInsight REST API,可以是定期从 cron 作业中调用,也可以在用户启动后调用。
我按照 Azure 文档中Service to service calls using client credentials - First case: Access token request with a shared secret 页面上的说明操作,注册了一个“本机”类型的新应用程序,我可以调用/token 端点以使用我的客户端密码获取令牌来运行我的脚本(我阅读了几个小时的 Azure 文档,这看起来是正确的方法,但并不容易理解所有内容,所以我可能会弄错)。
不幸的是,当我尝试进行 REST API 调用时,我意识到我已通过身份验证,但无权进行这些调用,我得到了403 Forbidden(微软称之为AuthorizationFailed)。
{'code': 'AuthorizationFailed',
'message': "The client 'CLIENT' with object id 'OBJ' does not
have authorization to perform action 'Microsoft.HDInsight/...' over scope
'/subscriptions/SUBID/resourceGroups/RESGR/providers/Microsoft.HDInsight/clusters/CLUSTER'."
}
我在哪里可以授权我的应用程序发出我希望它发出的请求?
我去了 Azure 门户
Active Directory
=> App registrations => (Select my app)
=> API Access/Required permissions
=> (+ button, Add API Access) => 1. Select an API
此时,我似乎无法选择我可能需要的服务,有些服务我无法选择。例如,当我在搜索栏中键入 Azure 时,选项未激活,我无法选择它们。
我已经尝试打开 My permissions => Resource Provider Status 并注册了我认为可能需要的所有内容。
我的目录角色是User,我怀疑我可以更改它。
【问题讨论】:
-
让我知道这是否有效,我将简要介绍它作为回应
-
如果您在 AAD 中看不到任何可选择的服务来为您的应用添加权限,这意味着您没有足够的权限。您的应用程序应该已授予正确的服务权限,并且在分配权限后您需要授予它们。 REST 响应消息似乎在暗示它。
标签: rest azure authorization azure-hdinsight