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

Graph API共享文件Guest用户401未授权:实验室正常生产环境失败

Guest用户通过SPA调用Microsoft Graph API访问SharePoint文件返回401问题

问题背景

我有一个单页应用(SPA),以登录用户的身份(Delegated permissions)访问SharePoint Online文件,完全依赖用户上下文,不使用Service Principal。用户为受邀加入租户的外部Guest用户(B2B),登录后应用尝试通过Microsoft Graph API解析通过“特定人员”共享的SharePoint链接。当前问题:生产租户中API调用返回401 Unauthorized(错误码:accessDenied),但相同配置在实验室租户中运行正常;直接打开链接可正常访问,且在用户确认邮箱后的几小时内(令牌有效期内)Web应用也可正常访问。

API调用详情

使用/shares/端点解析共享链接:

GET https://graph.microsoft.com/v1.0/shares/u!{encoded_url}/driveItem

症状

  • Graph API返回401 Unauthorized;
  • 携带包含User.Read.All权限的令牌调用GET /users仍返回401;
  • 调用GET sites/id也返回401;
  • 解码访问令牌(scp声明)确认包含Files.Read.All、Sites.Read.All等所需权限;
  • 生产环境企业应用已完成管理员同意,且租户无用户同意限制策略。

已排查项

  • 确认授权端点使用正确的tenantId;
  • 验证链接编码逻辑正确;
  • 已将Guest用户添加至User Information List;
  • 检查Entra ID Guest用户访问设置、跨租户访问设置,未发现异常;
  • 确认企业应用“需要分配”设置为否、对用户可见;
  • 排除Conditional Access策略、Security Defaults、SharePoint锁定模式的影响;
  • 确认用户为Guest且在共享链接指定人员列表中。

核心疑问

令牌权限正确且已获管理员同意,为何生产环境中Guest用户调用Graph及SharePoint接口仍返回401?是否存在隐藏的目录级设置会阻断Guest用户的令牌?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 14:03:13