Azure GraphClient 库从组中删除用户

本文关键字:删除 用户 GraphClient Azure | 更新日期: 2023-09-27 18:35:51

Azure 图形客户端库已于 12 月 22 日更新,并修复了将用户添加到组的方法。

Azure Active Directory 图形客户端 2.0 - 上下文当前未跟踪实体

但是是否可以从组中删除用户?

我尝试了这种方法:

{groupObject}.Members.Remove({entityObject} as DirectoryObject); 
await myGroup.UpdateAsync();

它不会失败,但不会从组中删除用户。

Azure GraphClient 库从组中删除用户

我找到了解决方法。也许这会有所帮助:

public void RemoveUserFromGroup(Group group, User user)
    {
            var internalGroup = _activeDirectoryClient.Context.CreateQuery<GraphClient.Internal.Group>("groups/" + group.ObjectId).ToList().First();
            var internalUser = _activeDirectoryClient.Context.CreateQuery<GraphClient.Internal.User>("users/" + user.ObjectId).ToList().First();
            _activeDirectoryClient.Context.DeleteLink(internalGroup, "members", internalUser);
            _activeDirectoryClient.Context.SaveChanges();           
    }

我遇到了类似的问题,并能够诊断出来。 我认为问题取决于如何检索组 - 是否包括组的成员;您可以使用 .为此扩展() 子句。

例如,以下方法确实有效:

group = (Group)(await _activeDirectoryClient.Groups.Where(g => g.ObjectId == groupId).Expand(g => g.Members).ExecuteSingleAsync());
user  = (User)(await _activeDirectoryClient.Users.Where(u => u.ObjectId == userId).ExecuteSingleAsync());
group.Members.Remove(user);
await group.UpdateAsync();

但请注意,.Expand() 操作仅限于 20 个对象,因此在大多数情况下,Tomáš 的解决方案目前可能更安全。