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

为Site.Selected权限的Azure应用注册配置SharePoint站点权限遇错求助

解决SharePoint Online Site.Selected应用站点权限配置的403错误

错误原因分析

报错Either scp or roles claim need to be present in the token说明执行命令的应用身份令牌中缺少必要的权限声明:

  • 证书认证的PnP操作属于应用身份模式,需要令牌包含roles声明(对应应用权限),而非委派权限的scp声明。
  • 你尝试的两种方式都存在权限配置或命令语法问题:
    1. 直接用Site.Selected权限的应用执行:该权限仅允许应用访问被授权的站点,无权限给自己分配站点权限。
    2. 用高权限应用执行:要么权限未正确配置/授权,要么命令存在语法错误。

解决步骤

1. 确保高权限应用的权限配置正确

用来执行分配操作的高权限应用需要:

  • 在Azure AD中添加SharePoint Online > 应用权限 > Sites.FullControl.All(最低要求为Sites.Manage.All,推荐用FullControl.All)。
  • 点击授予管理员同意,确保权限生效。

2. 修正命令语法错误

你第二次执行的命令存在两处语法错误:

  • Sites.Seleced拼写错误,应为Sites.Selected。
  • Get-PnPAzureADAppSitePermission的AppIdentity参数后多了一个引号,导致参数解析失败。

3. 正确的命令示例

# 配置参数
$siteUrl = "https://your-domain.sharepoint.com/sites/integration-prod"
$highPrivilegeClientId = "高权限应用的Client ID"
$highPrivilegeCertThumbprint = "高权限应用的证书指纹"
$tenant = "your-domain.onmicrosoft.com"
$targetAppClientId = "Site.Selected权限应用的Client ID"
$permissionDisplayName = "SPGPIntegration-Test"

# 连接到SharePoint站点(使用高权限应用)
Connect-PnPOnline -Url $siteUrl -ClientId $highPrivilegeClientId -Thumbprint $highPrivilegeCertThumbprint -Tenant $tenant

# 直接授予FullControl权限(无需先授Write再修改)
$permission = Grant-PnPAzureADAppSitePermission -Permissions "FullControl" -Site $siteUrl -AppId $targetAppClientId -DisplayName $permissionDisplayName

# 验证权限(可选)
Get-PnPAzureADAppSitePermission -AppIdentity $targetAppClientId

4. 验证令牌权限

连接成功后,执行以下命令检查令牌是否包含roles声明:

$token = Get-PnPAccessToken
$tokenPayload = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($token.Split('.')[1].PadRight($token.Split('.')[1].Length + ($token.Split('.')[1].Length % 4), '=')))
$tokenPayload | ConvertFrom-Json

查看输出中的roles字段,确认包含Sites.FullControl.All或对应的权限值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:24:58