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();
它不会失败,但不会从组中删除用户。
我找到了解决方法。也许这会有所帮助:
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áš 的解决方案目前可能更安全。