非全局管理员在Azure中获取应用API令牌及授权自身应用的方法
Azure服务主体令牌获取失败及授权问题
背景信息
我已在Azure中基于指定仓库创建应用,并通过以下命令创建服务主体完成部署:
az ad sp create-for-rbac --name "fxpricepredictor" --role contributor --scopes "/subscriptions/YOUR-SUBSCRIPTION-ID/resourceGroups/YOUR-RESOURCE-GROUP-NAME" --sdk-auth
需获取API令牌以通过REST API管理已创建的资源,根据官方文档,应使用tenantId、clientId和client_secret调用以下端点:
curl -X POST https://login.microsoftonline.com/{{tenantId}}/oauth2/token
注:我并非租户的全局管理员。
错误返回结果
调用上述端点后未获取到令牌,返回错误内容如下:
{ "error": "unauthorized_client", "error_description": "AADSTS700016: 标识符为'MY_CLIENTID'的应用在目录'MY COMPANY'中未找到。这可能是因为租户管理员未安装该应用,或租户中无用户同意该应用。你可能向错误的租户发送了身份验证请求。\r\n跟踪ID: 5a9a2c53-c3c8-46da-a1a6-551b42082400\r\n关联ID: bf7c5966-ffa4-4312-8a77-434c2560d65a\r\n时间戳: 2022-10-05 14:54:23Z", "error_codes": [ 700016 ], "timestamp": "2022-10-05 14:54:23Z", "trace_id": "5a9a2c53-c3c8-46da-a1a6-551b42082400", "correlation_id": "bf7c5966-ffa4-4312-8a77-434c2560d65a", "error_uri": "https://login.microsoftonline.com/error?code=700016" }
(注:错误信息中的敏感值已用MY_CLIENTID和MY COMPANY替换)
核心问题
我推测问题根源是应用未获得租户内用户的授权,现存在两个疑问:
- 如何获取可用于REST API管理资源的令牌?
- 作为非全局管理员,如何为自身创建的应用进行授权?
已尝试的授权操作(未成功)
我尝试通过Microsoft Graph权限配置进行授权,操作步骤如下:
- 登录Azure门户
- 进入「Azure Active Directory」
- 进入「应用注册」
- 点击已创建的应用「fxpricepredictor」
- 进入「API权限」
- 点击「添加权限」
- 选择「Microsoft Graph」
- 选择「委派权限」
- 搜索「authentication」——但该权限选项仍需要管理员同意
内容的提问来源于stack exchange,提问作者Sal-laS
相关产品推荐
相关产品推荐

