使用图形 API 使用所选网站权限连接到 SharePoint 时,令牌错误中不存在角色声明

问题描述 投票:0回答:1

我们的应用程序有一个客户端注册,该客户端具有访问特定 SharePoint 网站的权限,这些权限是使用以下文章中描述的sites.selected 方法授予的。我们的应用程序被分配了该站点的“写入”角色。

https://devblogs.microsoft.com/microsoft365dev/controlling-app-access-on-specific-sharepoint-site-collections/

我们可以检索用于应用程序注册的令牌。但是,它不包含角色或 scp 声明,当我们尝试调用以查看站点上的列表或驱动器时,我们会收到一条错误通知。

我们做错了什么吗? site.selected 权限是否不会扩展到列表或云端硬盘?

(我们只计划将驱动器调用用作一次性操作,因此如果不支持这一点,我们可能可以解决这个问题。我们的要求是在指定站点上读取和写入文件。)

这是我们检索令牌的请求和响应:

以下是列出驱动器的请求:

更新:我认为问题是为 SharePoint API 而不是 Graph API 授予了权限。

microsoft-graph-api sharepoint-online azure-ad-graph-api
1个回答
0
投票

如果在调用 Graph API 请求时访问令牌没有与 Microsoft Graph 相关的权限,通常会发生该错误。

当我尝试使用没有 Graph API 权限的令牌列出站点中的驱动器时,我也遇到了同样的错误,如下所示:

GET https://graph.microsoft.com/v1.0/sites/siteId/drives

回复:

enter image description here

要解决该错误,请确保在应用程序注册中授予 Application 类型的 Microsoft Graph API 权限:

enter image description here

现在,我通过 Postman 使用客户端凭据流再次生成了 访问令牌

POST https://login.microsoftonline.com/tenantId/oauth2/v2.0/token
grant_type:client_credentials
client_id: appId
client_secret: secret 
scope: https://graph.microsoft.com/.default

回复:

enter image description here

要确认这一点,您可以在 jwt.ms 网站中解码访问令牌并检查

roles
声明是否具有 有效 权限:

enter image description here

当我使用此令牌在 SharePoint 站点中列出驱动器时,我成功收到了响应,如下所示:

GET https://graph.microsoft.com/v1.0/sites/siteId/drives

回复:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.