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

使用Azure Function托管身份调用Graph API时遇‘Access Denied’错误求助

排查Azure Function部署后调用Graph API访问SharePoint列表的"Access Denied"问题

核心排查步骤

  • 验证权限绑定的准确性

    • 确认Azure AD中给托管身份分配的Sites.Selected是应用权限,且已完成管理员同意。
    • 执行以下PnP命令,检查站点权限是否正确绑定到目标托管身份:
      Get-PnPAzureADAppSitePermission -SiteUrl "你的目标站点URL"
      
      确保返回结果里托管身份的Permissions字段为Manage,且对应站点URL与代码中请求的一致。
  • 检查Token的有效性与声明

    • 在Azure Function中添加日志,解码获取到的JWT Token,重点核对:
      • aud字段必须是https://graph.microsoft.com
      • roles字段需包含Sites.Selected(应用权限只会出现在roles中,scp属于委托权限,不应出现在此场景)
  • 确认API请求与权限范围匹配

    • 确保代码中调用Graph API的站点ID/URL和授予Manage权限的站点完全一致,避免根站点权限却请求子站点资源的情况。
    • 检查请求的Graph API路径是否在Manage权限覆盖范围内,比如/sites/{site-id}/lists/{list-id}/items是合规的,但部分特殊端点可能需要额外权限。
  • 排查托管身份上下文

    • 如果使用用户分配的托管身份,需确认Function配置中的AZURE_CLIENT_ID已设置为该身份的Client ID,且代码获取Token时指定了此ID。
    • 如果是系统分配的托管身份,要确认Function的身份设置已启用,且所有权限均分配给该系统身份。
  • 考虑权限传播延迟

    • 权限分配后可能需要15-30分钟才能在Azure环境中完全生效,尤其是复杂场景,可等待一段时间后重试。
  • 排除网络与站点限制

    • 若Function部署在虚拟网络中,检查是否有出站规则限制了Graph API的访问。
    • 确认SharePoint站点本身没有额外的访问控制列表(ACL)规则拒绝托管身份的访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:48:31