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

Graph API选定站点权限异常:为何请求全SharePoint站点读写权限?

问题原因与解决方案

核心原因

  1. 误用全局站点权限:你大概率在Azure AD应用注册时,选了Sites.ReadWrite.All或Sites.FullControl.All这类租户级全局权限,而非Sites.Selected这个站点级权限。这类全局权限本身就要求全站点的读写/控制权限,和你API声明里的内容无关——权限请求最终以应用注册里配置的权限范围为准。
  2. Sites.Selected权限的特殊性:如果目标是仅访问特定站点集,必须用Sites.Selected,但这个权限不能直接生效,需要额外给应用分配具体站点的权限,否则系统会默认索要更高权限。

解决步骤

  • 替换权限范围:在Azure AD应用注册的「API权限」页面,删除现有的全局站点权限,添加Sites.Selected(注意区分委派权限和应用权限,根据你的应用类型选择)。
  • 分配特定站点权限:
    • 如果是应用权限:用Graph API发送请求,示例:
      POST https://graph.microsoft.com/v1.0/sites/{site-id}/permissions
      Content-Type: application/json
      {
        "roles": ["write"],
        "grantedToIdentities": [
          {
            "application": {
              "id": "{你的应用ID}",
              "displayName": "{你的应用名称}"
            }
          }
        ]
      }
      
    • 或者用PowerShell命令:
      Connect-MgGraph -Scopes "Sites.FullControl.All"
      New-MgSitePermission -SiteId "{site-id}" -Roles @("write") -GrantedToIdentities @(@{ Application = @{ Id = "{应用ID}" } })
      
  • 验证权限请求:确认你的API声明(比如访问令牌的scp/roles字段)里只有Sites.Selected,没有全局站点权限的标识。
  • 重新授权:删除应用现有授权,重新发起授权流程,此时系统只会请求Sites.Selected对应的权限,不会再要求全站点访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:24:53