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

多租户服务中使用Microsoft Entra ID OAuth调用Azure DevOps REST API的配置与认证故障排查求助

多租户服务中使用Microsoft Entra ID OAuth调用Azure DevOps REST API的配置与认证故障排查求助

我现在正在开发一个多租户服务,需要代表用户在Azure DevOps中列出、创建和更新工作项。但在配置Microsoft Entra ID应用、认证流程以及对接Azure DevOps REST API的过程中,我有点摸不着头脑,遇到了卡壳的问题。

之前我搜了不少资料,看到的方案大多是用Azure DevOps OAuth 2.0或者PAT,但我不想用PAT,而且微软也明确推荐用Entra ID OAuth替代Azure DevOps OAuth 2.0,另外很多现有方案也不支持兼容个人微软账号的多租户场景。我怀疑是不是在Entra ID应用的配置上漏了关键步骤,或者对OAuth流程的理解有偏差,希望能得到文档指引或者代码示例的帮助。

一、我的Entra ID(Azure AD)应用配置

  • 参考微软推荐的文档创建了Entra ID应用,认证设置选择了「任何组织目录中的账户(任何Microsoft Entra ID租户 - 多租户)和个人微软账户(如Skype、Xbox)」
  • API权限配置:添加了Microsoft Graph的offline_access、openid权限,以及Azure DevOps的vso.work_full权限
  • 暂时将Web重定向URI设置为https://jwt.ms用于测试

二、尝试的认证流程及遇到的问题

  1. 首先构造授权跳转链接:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=<clientId>&response_type=code&redirect_uri=https://jwt.ms&response_mode=query&scope=openid offline_access&prompt=select_account
  1. 具体错误情况:
    • 如果在scope参数里加上vso.work_full(即scope=openid offline_access vso.work_full),用个人微软账号登录后会直接报错:
      error=invalid_scope&error_description=The provided value for the input parameter 'scope' is not valid. The scope 'openid offline_access vso.work_full' does not exist.
      
    • 如果只使用scope=openid offline_access,能正常获取到授权码,但把这个授权码POST到https://login.microsoftonline.com/common/oauth2/v2.0/token接口时,哪怕在请求里带上vso.work_full,还是会弹出同样的“scope不存在”错误。
    • 我没尝试去掉openid和offline_access,因为我的服务需要支持个人微软账号登录,这两个权限应该是个人账号认证必需的,去掉的话应该就没法用个人账号登录了。

备注:内容来源于stack exchange,提问作者Stephen Saw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 08:43:11