通过某些API将Azure AD组权限分配给OneDrive For Business文件

时间:2015-05-05 12:44:20

标签: azure sharepoint permissions office365 onedrive

我已经成功地使用Sharepoint CMOS API与一个组共享OneDrive for Business文件。

像这样:

   context.Load(listItem, l => l.HasUniqueRoleAssignments);
   context.ExecuteQuery();
   if (!listItem.HasUniqueRoleAssignments)
   {
       listItem.BreakRoleInheritance(true, false);
   }
   var group = context.Web.SiteGroups.GetByName(groupName);
   context.Load(context.Site.RootWeb, w => w.RoleDefinitions);
   context.ExecuteQuery();

   var roleTypeKind = readOnly ? RoleType.Reader : RoleType.Editor;
   var role = context.Site.RootWeb.RoleDefinitions.FirstOrDefault(rd =>     rd.RoleTypeKind == roleTypeKind);


   var roleDefCollection = new RoleDefinitionBindingCollection(context) { role };
   listItem.RoleAssignments.Add(group, roleDefCollection);
   context.ExecuteQuery(); 

但问题是该组属于SiteGroups,它对一个用户来说是本地的。因此,如果我有Azure AD组,则无法使用Sharepoint API访问它。

我可以使用GraphClient API找到Azure AD组,如下所示:

var azuregroup = activeDirectoryClient.Groups
                    .Where(g=> g.DisplayName.Equals("groupname"))
                    .ExecuteAsync().Result.CurrentPage.ToList().First() as Group;

但是如何使用/ any API授予该组访问该文件的权限?应该可以在OneDrive for Business UI中实现。

不可能这样做

listItem.RoleAssignments.Add(azuregroup, roleDefCollection);

因为Add的第一个参数必须是azuregroup不是的Principal。

希望任何人都可以提供帮助 - 我已经在互联网上搜索了无数个小时。

0 个答案:

没有答案