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

已实现SharePoint站点级授权,如何通过Graph API仅授权特定文档库?

问题描述

我正在使用sites.Selected范围处理SharePoint细粒度权限,通过Graph API为应用授予访问角色。当需要让应用操作站点内所有列表/驱动器时,这种方式运行正常。示例调用为:
POST https://graph.microsoft.com/v1.0/sites/{site-Id}/Permissions
请求负载如下:

{
    "roles": [
        "write"
    ],
    "grantedToIdentitiesV2": [
        {
            "application": {
                "id": "<<App Id>>",
                "displayName": "TestDaemonGraphAPI"
            }
        }
    ]
}

但我需要限制应用仅访问部分驱动器/文档库,目前在站点级别设置权限会让应用能访问所有驱动器,请问如何通过Graph API仅为特定驱动器/库授予访问权限?

更新尝试及错误

我尝试直接在驱动器级别授予权限,但操作失败,错误详情如下:

状态码:404
错误类型:ResourceNotFound
错误消息:找不到与分段“permissions”对应的资源。
请求ID:[请求ID]
日期:[错误发生日期]

解决方案

要给特定驱动器(文档库)授予应用权限,不能直接对drive资源调用permissions端点——Graph API目前不支持直接在驱动器级别为应用授予sites.Selected范围的权限。正确做法是针对文档库对应的列表设置权限,因为SharePoint中的文档库本质是特殊类型的列表:

  1. 获取目标文档库的列表ID
    调用接口筛选出目标文档库对应的列表,获取其id:
    GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists?$filter=displayName eq '目标文档库名称'

  2. 为该列表授予应用权限
    使用列表的permissions端点发送POST请求,请求格式与站点级权限配置类似:
    POST https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/Permissions
    请求负载:

    {
        "roles": ["write"], // 可根据需求替换为read等权限
        "grantedToIdentitiesV2": [
            {
                "application": {
                    "id": "<<你的应用ID>>",
                    "displayName": "TestDaemonGraphAPI"
                }
            }
        ]
    }
    
  3. 验证权限效果
    配置完成后,应用将仅能访问已授权的文档库对应的驱动器,未授权的驱动器会返回权限错误。

注意:确保应用已配置sites.Selected应用权限,且完成了管理员授权(admin consent)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:27:45