使用含user_impersonation权限的Azure OAuth2令牌调用Azure DevOps API跳转问题
可能遗漏的配置及检查步骤
- 权限同意校验:你在Azure AD中为应用配置的
user_impersonation委托权限,必须完成租户级管理员同意。若你的AAD租户关闭了普通用户自主同意权限的配置,即使你走通了授权码流拿到令牌,权限实际未生效,接口会直接拒绝认证。 - DevOps租户关联校验:你要访问的Azure DevOps组织,必须和你创建应用的AAD租户完成绑定关联。如果DevOps组织使用个人账户模式,或绑定的是其他AAD租户,当前租户颁发的令牌不会被DevOps识别。
- DevOps侧权限配置:你需要将该AAD应用对应的服务主体,添加到目标Azure DevOps组织的用户列表中,并授予对应接口所需的访问权限(至少包含用户概要读取权限),否则令牌合法也会被DevOps的权限拦截层拦截,返回登录跳转。
- 请求参数校验:
- 确认授权码请求阶段传递的scope确实为
https://app.vssps.visualstudio.com/user_impersonation,没有同时请求其他资源的scope导致令牌权限被覆盖 - 确认请求接口时
Authorization头的格式为Bearer {令牌},二者中间仅保留一个空格,无多余特殊字符,且请求未携带冲突的旧登录Cookie
- 确认授权码请求阶段传递的scope确实为
内容的提问来源于stack exchange,提问作者RokL
相关产品推荐
相关产品推荐

