Azure CLI中授权客户端应用调用API失败(401未授权)
问题:服务主体调用Azure API时的401授权错误及范围限制问题
背景信息
- API应用注册:AppId
00000000-1111-1111-1111-000000000000,已暴露范围api://00000000-1111-1111-1111-000000000000/MyData.Read.All - 客户端应用注册:AppId
00000000-2222-2222-2222-000000000000,已添加到API的「授权客户端应用」列表
个人用户账号调用正常
通过Azure CLI使用个人用户账号登录,可成功获取令牌并访问API:
az login ` --allow-no-subscriptions ` --scope 'api://00000000-1111-1111-1111-000000000000/MyData.Read.All' $accessToken = az account get-access-token ` --scope 'api://00000000-1111-1111-1111-000000000000/MyData.Read.All' ` --query accessToken --output tsv
服务主体调用异常
使用客户端应用(服务主体)调用API时出现以下问题:
- 先登录服务主体:
az login ` --allow-no-subscriptions ` --tenant '00000000-0000-0000-0000-000000000000' ` --service-principal -u "00000000-2222-2222-2222-000000000000" -p "****" ` --query accessToken ` --output tsv
- 尝试使用API暴露的
MyData.Read.All范围获取令牌时失败,系统强制要求使用/.default后缀:
# 此命令执行报错 $accessToken = az account get-access-token ` --scope 'api://00000000-1111-1111-1111-000000000000/MyData.Read.All' ` --query accessToken --output tsv
报错内容:
Client credential flows must have a scope value with /.default suffixed to the resource identifier (application ID URI)
- 改用
/.default范围获取令牌后,用该令牌调用API返回**401(未授权)**错误:
$accessToken = az account get-access-token ` --scope 'api://00000000-1111-1111-1111-000000000000/.default' ` --query accessToken --output tsv
内容的提问来源于stack exchange,提问作者Daniel M.
相关产品推荐
相关产品推荐

