使用 ms-graph 'Sites.Selected' 权限读取 Sharepoint 文档库上的角色分配

问题描述

我正在构建一个应用程序,该应用程序需要能够在 ms-graph 的帮助下从特定 Sharepoint 站点上的文档库中读取角色分配。 Sites.Selected API 权限对我的用例几乎完美适用,但由于某种原因,如果没有 Sites.FullControl.All,我无法检索文档库上的所有角色分配。我仍然可以从文档库下的文件夹和文件中检索角色。

使用下面的代码,我可以看到“James Doe”对库具有“写入”权限,而 Sites.FullControl.All 对我的应用程序注册处于活动状态,如果没有它,roles 属性不包含任何元素

var docLibs = await graphServiceClient.Sites[this.siteId].Drives
    .Request().GetAsync();

foreach (var docLib in docLibs){
    var perms = await graphServiceClient.Sites[siteId].Drives[$"{docLib.Id}"]
         .Root.Permissions.Request().GetAsync(); 

    foreach (var perm in perms) {
        Console.WriteLine($"{perm.GrantedTo.User.DisplayName} - {Perm.Roles.ToList().Count}");
    }
}

// With Sites.Selected (using ['write'] permission):
//  ==> James Doe - 0

// With Sites.FullControl.All:
//  ==> James Doe - 1

我尝试了许多其他 API 权限,但只有 Sites.FullControl.All 似乎能够正确读取角色分配。我正在寻找一种特权较低的替代方案,它仍然可以读取文档库中的角色分配。

最好的解决方案是,如果 Sites.Selected 可以接受类似于

的请求
// POST https://graph.microsoft.com/v1.0/sites/<...>/permissions
{
    "roles": [
        "sp.full control" // Instead of 'write' 
    ],"grantedToIdentities": [
        {
            "application": {
                "id": "11111111-1111-1111-1111-111111111111","displayName": "My graph App"
            }
        }
    ]
}

仅将应用程序 FullControl 提供给特定站点。但是,我还没有看到任何人能够为端点使用除了 readwrite 之外的角色。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...