【问题标题】:Get AAD Roles from React SPFx Webpart从 React SPFx Webpart 获取 AAD 角色
【发布时间】:2022-11-23 17:38:44
【问题描述】:
我有一个简单的 React SPFX Webpart。
我们已将其部署到我们的 SP Online 站点。
它当前显示当前用户的 SP 组。
const queryUrl = `${this.context.pageContext.site.absoluteUrl}/_api/web/currentuser/groups`;
const siteGroupsData = await this.context.spHttpClient.get(
queryUrl,
SPHttpClient.configurations.v1
);
const siteGroups: any[] = (await siteGroupsData.json()).value;
const justNames = siteGroups.map((m) => m.Title);
const groups = justNames.join(",");
我还需要显示 AAD 组\角色吗?
我需要使用 Microsoft Graph 吗? MSAL?
如何?
有太多旧的和令人困惑的信息。
我尝试使用以下
import { Providers, SharePointProvider } from "@microsoft/mgt";
Providers.globalProvider = new SharePointProvider(this.context);
以上在控制台中产生以下错误:
InteractionRequiredAuthError:AADSTS65001:用户或管理员未同意使用名为“SharePoint Online Client Extensibility Web Application Principal”的 ID 为“”的应用程序。为此用户和资源发送交互式授权请求。
跟踪 ID:
关联 ID:
时间戳:2022-11-15 15:07:21
这只是 Workbench 的问题吗?
我在 Web 上看到了针对完整 REACT SPA 的示例,但这是一个 Web 部件,并且用户已经登录。我觉得我不必请求令牌。
也许它只是一个需要的 SP 在线配置设置。
谢谢!
【问题讨论】:
标签:
reactjs
azure-active-directory
sharepoint-online
web-parts
spfx
【解决方案1】:
这个错误AADSTS65001: The user or administrator has not consented to use the application with ID '' named 'SharePoint Online Client Extensibility Web Application Principal'. Send an interactive authorization request for this user and resource.
主要发生当管理员未同意访问应用程序时.
- 检查您是否公开了 API,添加了具有图形查询所需的 API 权限的范围,以查询用户、组和批准并授予同意。SPFx 中的相同检查。
在 SPFx 中,管理员可以在身份验证过程中批准或拒绝请求。
在这种情况下,访问被错误拒绝
请与管理员核实,或者是否启用了用户同意。
确保他们获得同意。
并在企业应用程序> usersettings.or (here) 中检查该应用程序是否允许用户同意
根据应用程序设置为不允许。
所有这些权限通常存储在SharePoint Online Client Extensibility Azure AD application这是通过 Web API 请求授予的。因此,导致此问题的主要原因是缺乏管理员或用户的同意。
管理员可能已使用 Disable-SPOTenantServicePrincipal 禁用权限或使用 Deny-SPOTenantServicePrincipalPermissionRequest -RequestId <Guid> 拒绝该权限。请参阅全局和 SharePoint 管理员可以使用 powershell commands 管理请求。
如果管理员同意所需的权限,则查询将成功
请注意,来宾用户没有权限查询多个
超过 1 个用户,例如:/groups/{id}/members
Microsoft Graph permissions reference - Microsoft Graph | Microsoft Learn
对于 spfx web 部件,有一个 known issue 在使用 Microsoft graph api 时我们无法获得角色声明,因为它使用不提供角色的委派权限的隐式授权。
请参阅下面没有 wids 声明的解码令牌。