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

如何用MSAL获取的JWT Token提交代码至Azure Repo?权限及跨应用疑问

关于Azure AD Token调用Azure DevOps API的权限与跨应用使用问题

我们使用@azure/msal-react Node模块完成用户身份验证:用户输入账号密码后由Azure AD完成认证,通过后获取JWT Token,该Token会随请求传递给Spring Boot REST API,由Spring框架完成身份验证。

现在需要使用此Token向Azure DevOps API发起REST调用以提交代码至Azure Git仓库,咨询以下问题:

  1. 执行该操作需为用户配置哪些权限?配置位置在哪里?
  2. Azure AD为某应用颁发的JWT Token能否用于另一应用的操作?

问题1:所需权限及配置位置

要实现通过Azure AD Token调用Azure DevOps API提交代码,需配置两类权限:

Azure AD应用层面的API权限

  • 需要在Azure AD应用注册中添加Azure DevOps相关的API权限,核心权限为:
    • Code.ReadWrite.All:允许读写代码仓库内容,满足提交代码的核心需求
    • 若需关联用户身份信息,可额外添加User.Read等基础权限
  • 配置位置:
    1. 进入Azure门户的应用注册,找到你的目标应用
    2. 切换到API权限页面,点击添加权限
    3. 在我的组织使用的API中搜索“Azure DevOps”,选择对应权限后点击添加权限
    4. 点击授予管理员同意(需拥有Azure AD管理员权限完成此步骤)

Azure DevOps组织层面的仓库权限

  • 需要确保用户在Azure DevOps目标仓库中拥有Contributor及以上角色权限,该权限允许用户提交、推送代码至仓库
  • 配置位置:
    1. 进入Azure DevOps组织的目标项目
    2. 切换到项目设置→权限→仓库
    3. 找到目标仓库,添加用户或用户组,分配Contributor角色

问题2:Azure AD JWT Token的跨应用使用限制

Azure AD颁发的JWT Token不能直接用于另一应用的操作,核心原因是Token的aud(受众)字段与特定目标资源绑定:

  • 当前获取的Token是针对Spring Boot API的,其aud值为Spring Boot应用在Azure AD中的client ID
  • 而Azure DevOps API要求Token的aud值为固定的Azure DevOps资源ID:499b84ac-1321-427f-aa17-267ca6975798

若要调用Azure DevOps API,需通过@azure/msal-react重新获取针对Azure DevOps资源的Token,请求时指定对应scope(例如499b84ac-1321-427f-aa17-267ca6975798/.default),获取到的Token才能被Azure DevOps API验证通过。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 01:51:00