使用ListItem.GetUserEffectivePermissions所需的正确用户权限
1. 用SearchExecutor搜索全站点文件的权限要求
- 得给服务账号添加站点集级别的搜索权限,两种方式二选一:
- 直接分配内置的**“搜索和使用中心”权限级别**,自带执行搜索、读取搜索结果的权限
- 自定义权限级别的话,勾选**“查询列表”和“查看项目”**这两个核心权限即可
- 若需跨站点集搜索文件,要么给服务账号在每个目标站点都配置上述权限,要么在租户层面设置全局搜索权限(仅限SharePoint Online)
2. Utility.ResolvePrincipal获取登录名的权限要求
- 该操作仅需服务账号具备读取用户信息的权限:
- 在站点集级别分配内置的**“读取”权限级别**即可,此级别包含读取用户配置文件的权限
- 自定义权限级别则勾选**“查看用户信息”**权限
- 本质上ResolvePrincipal是查询用户配置服务,只要能读取站点内的用户信息就足够,无需更高权限
3. ListItem.GetUserEffectivePermissions检查用户权限的权限要求
- 官方文档未明确说明,但实际实践中,服务账号需对目标文件(ListItem)拥有**“查看权限”的权限**:
- 直接使用内置的**“受限访问”权限级别**,此级别允许查看对象的权限设置,但无法修改
- 自定义权限级别则勾选**“查看权限”**权限,拥有该权限才能查询项目的权限分配情况,进而计算出其他用户的有效权限
- 若需跨站点检查权限,每个目标站点都得给服务账号配置该权限
新手实用建议
- 优先使用内置权限级别,避免自定义级别导致权限漏洞
- 若使用SharePoint Online,也可通过Azure AD应用权限配置(针对应用账号);如果是普通用户账号作为服务账号,直接在站点/站点集的权限设置中分配即可
- 测试时先授予最小权限,不足时再逐步添加,避免过度授权
- 权限生效可能需要15-30分钟,配置完成后不要立即测试
内容的提问来源于stack exchange,提问作者Ahmad Adel
相关产品推荐
相关产品推荐

