如何通过用户分配托管身份获取Azure资源管理API访问令牌?
使用用户分配托管身份获取Azure访问令牌的REST API方法
要通过REST API(调用Azure实例元数据服务)获取用户分配托管身份的访问令牌,只需在原系统分配身份的请求URI中添加client_id参数,参数值为用户分配托管身份的客户端ID(也就是你之前Connect-AzAccount命令中用到的$env:userid)。
具体PowerShell代码示例:
# 读取用户分配托管身份的客户端ID $clientId = $env:userid # 调用元数据服务获取针对Azure管理API的访问令牌 $response = Invoke-WebRequest -Uri "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F&client_id=$clientId" -Headers @{Metadata="true"} # 解析并提取访问令牌 $accessToken = ($response.Content | ConvertFrom-Json).access_token
关键说明:
client_id参数是区分系统分配和用户分配身份的核心,必须指定你要使用的用户分配托管身份的客户端ID- 请求的其他部分(元数据头部、resource参数)和系统分配身份的请求保持一致
- 该请求仅能在Azure虚拟机、函数应用等支持托管身份的资源内部执行,因为IMDS端点
169.254.169.254是实例内部的专属地址
内容的提问来源于stack exchange,提问作者pks
相关产品推荐
相关产品推荐

