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

不同租户下SharePoint Access Token的scp值差异原因咨询

SharePoint跨租户令牌scp字段返回差异原因及处理

现象说明

解码租户A、租户B的SharePoint访问令牌时,两个令牌的scp声明返回值存在明显差异:

  • 租户A令牌scp字段返回可读权限字符串:
"scp": "AllSites.FullControl User.Read User.ReadBasic.All" 
  • 租户B令牌scp字段返回带GUID的特殊值:
"scp": ".1f7f4061-caa1-44c4-b29a-6d877e9a5211"   

当前令牌请求走授权码流,调用参数如下:

{ "grant_type", "authorization_code" },
{ "client_id", azureConfig.ClientId },
{ "client_secret", azureConfig.ClientSecret },
{ "scope", "https://123435350365.sharepoint.com/.default"},
{ "redirect_uri","url" },
{ "code", code }

核心原因

Azure AD返回scp声明时,若能匹配到已发布的权限定义,就返回AllSites.FullControl这类可读字符串;如果匹配不到对应权限定义,就会直接返回.{权限对象ID}格式的值,这是平台原生返回逻辑,和令牌解码工具无关。出现跨租户差异的常见触发场景如下:

  • 租户级权限同意状态不一致
    请求https://<tenant>.sharepoint.com/.default范围时,服务端会返回当前租户对该应用已授予的所有静态委托权限。租户A已经由管理员完成了目标SharePoint权限(AllSites.FullControl等)的同意流程,权限定义匹配正常;租户B没有完成对应权限的管理员同意,服务主体上仅残留未完整配置的权限条目,就会返回ID格式的scp值。
  • 多租户应用服务主体同步异常
    多租户应用首次在租户B被使用时,会在租户B的Azure AD目录下生成本地服务主体。如果同步过程中出现网络波动、目录服务临时故障,会导致服务主体关联的权限定义没有完整拉取,权限ID无法映射到可读字符串,就会直接把ID返回到scp字段。
  • 端点版本混用导致权限映射失败
    如果应用注册时配置的是Azure AD v1.0端点的SharePoint权限,令牌请求却走v2.0端点,或者反过来,租户B目录的权限映射逻辑会出现兼容问题,无法正确解析权限名称。

处理步骤

  1. 用租户B的全局管理员/SharePoint管理员账号访问Azure AD管理员同意端点,针对需要的AllSites.FullControl、User.Read等权限重新完成一次管理员同意,确保权限被正确授予到租户B下的对应服务主体。
  2. 进入租户B的Azure AD企业应用面板,找到对应client_id的服务主体,检查「权限」配置页,删除所有孤立的、无对应名称的权限条目,重新添加需要的SharePoint委托权限后再次执行同意。
  3. 统一令牌请求端点和应用注册的权限配置版本,不要混用v1.0和v2.0的权限配置,建议统一使用v2.0端点和对应版本的权限配置项。

内容的提问来源于stack exchange,提问作者DevÁsith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:12:28