SharePoint Online Web Part运行账户及Graph API权限技术问询
1. 默认运行凭据
是的,默认情况下你开发的SharePoint Online Web Part会以当前使用该Web Part的用户凭据运行。所有Graph API调用或SharePoint操作都会基于该用户的权限范围执行。
2. 管理员与普通用户的Graph API权限差异
是的,SharePoint管理员(或全局管理员)在调用Graph API时拥有比普通云用户更高的权限:
- 普通用户仅能查看自己所属群组的成员列表
- 管理员可查询任意Office 365群组的成员,还能访问普通用户无权查看的目录级数据
3. 以高权限身份运行Web Part的方法
有以下几种可行方案:
- Azure AD应用程序权限:注册Azure AD应用,申请应用级权限(非委派权限)并由管理员授予同意。Web Part通过该应用身份调用Graph API,拥有对应高权限范围。
- SharePoint App-Only模式:创建SharePoint Add-in,采用App-Only权限模式,不依赖当前用户身份,直接以应用自身权限运行。
- 委派权限+服务账户:使用高权限服务账户,通过OAuth获取令牌后调用API,但此方式需妥善存储账户信息,不建议在前端Web Part中直接使用(存在安全泄露风险)。
代码解析
你提供的代码通过SPFx的msGraphClientFactory获取Graph API客户端,查询指定群组的成员列表:
// 获取Graph API v3版本客户端 var client = await this.context.msGraphClientFactory.getClient('3'); var result; // 查询指定GUID群组的成员信息 result = await client.api('groups/' + this.properties.groupGUID + '/members').get();
这段代码默认使用当前用户权限执行,若用户无该群组的成员查看权限,调用会返回权限不足的错误。
内容的提问来源于stack exchange,提问作者Pete Whelan
相关产品推荐
相关产品推荐

