Teams可配置标签SSO换MS Graph令牌遇AADSTS65001错误求助
解决AADSTS65001错误:OBO流程中应用未获得用户/管理员授权
核心原因
这个错误明确说明你的后端API应用(<webapi_app_id>)没有被当前用户或租户管理员授予调用MS Graph API所需的权限,直接导致OBO令牌交换失败。
具体排查与修复步骤
1. 核对后端API应用的权限配置
- 登录Azure门户,定位到<webapi_app_id>对应的应用注册
- 进入API权限页面,确认已添加正确的MS Graph权限:
- 获取团队用户列表需添加
TeamMember.Read.All或User.Read.All这类权限(OBO流程用委托权限,别选错成应用权限) - 确保权限状态显示已授予管理员同意(租户级应用必须由管理员操作;个人测试场景可尝试用户自主同意,但高权限仍需管理员授权)
- 获取团队用户列表需添加
2. 检查前端客户端应用的权限配置
- 找到你的Teams客户端应用注册,进入API权限页面:
- 确认已添加对后端API应用的访问权限(通常是
access_as_user这类自定义权限,或是后端API暴露的范围) - 同样要保证该权限已获得用户或管理员的同意
- 确认已添加对后端API应用的访问权限(通常是
3. 验证OBO令牌请求参数
检查你的令牌交换代码里的关键参数是否正确:
client_id必须是后端API应用的ID(<webapi_app_id>)scope参数要包含目标MS Graph API权限,比如https://graph.microsoft.com/TeamMember.Read.Allassertion参数必须是前端获取的有效Access Token(注意不是ID Token,OBO流程需要用客户端拿到的Access Token作为断言)
4. 强制触发权限同意流程
如果权限配置没问题但报错,可能是同意状态未生效:
- 管理员同意:在Azure门户的API权限页面点击授予管理员同意,等待几分钟让权限同步生效
- 用户同意:构造同意URL让用户重新授权,替换占位符后访问:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize?client_id={client-id}&response_type=code&redirect_uri={redirect-uri}&scope={required-scopes}&prompt=consent
5. 解析令牌确认权限
用jwt.ms解析前端获取的Access Token,查看scp字段是否包含对后端API的访问权限;如果OBO请求返回了错误令牌,也可以解析它确认具体的权限缺失项
内容的提问来源于stack exchange,提问作者Devesh Tiwari
相关产品推荐
相关产品推荐

