You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure应用服务:基于配置切换REST获取用户/系统托管身份访问令牌

Azure应用服务通过REST端点获取托管身份访问令牌

应用服务的本地元数据端点是统一的:http://169.254.169.254/metadata/identity/oauth2/token,通过不同请求参数可区分使用系统托管身份或用户托管身份。

1. 使用系统托管身份获取令牌

直接调用端点即可,无需指定身份标识,AAD默认使用系统托管身份:

  • 请求方法:GET 或 POST
  • 必要参数:
    • resource:目标服务的资源ID(例如Azure Storage为https://storage.azure.com/,Azure SQL为https://database.windows.net/)
    • metadata:必须设为true
  • 请求头:必须包含Metadata: true

示例curl请求:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://storage.azure.com/&metadata=true' -H 'Metadata: true'

2. 使用用户托管身份获取令牌

在请求中添加client_id或object_id参数,指定用户托管身份的对应ID,AAD会优先使用该身份而非系统托管身份:

  • 额外参数:
    • client_id:用户托管身份的客户端ID(可在Azure门户的用户托管身份详情页查询)
    • 或object_id:用户托管身份的对象ID
  • 其余参数和请求头与系统托管身份一致

示例curl请求(用client_id指定):

curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://storage.azure.com/&metadata=true&client_id=你的用户托管身份客户端ID' -H 'Metadata: true'

基于配置标志切换身份

你可以通过应用服务的应用设置(例如USE_USER_ASSIGNED_IDENTITY)作为开关,在代码中动态构造请求参数:

  • 当配置标志为true时,向请求URL追加&client_id=xxx参数,调用用户托管身份的令牌
  • 当配置标志为false时,去掉该参数,使用系统托管身份的默认调用方式

注意事项

  • 元数据端点仅能在应用服务内部访问,无需公网权限
  • 用户托管身份必须已关联到你的应用服务,且已被授予目标资源的访问权限
  • 请求头的Metadata: true是必填项,否则请求会被拒绝

内容的提问来源于stack exchange,提问作者GAK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:55:19