通过用户模拟将用户添加到活动目录

Posted

技术标签:

【中文标题】通过用户模拟将用户添加到活动目录【英文标题】:Add users to active directory through user impersonation 【发布时间】:2019-12-17 16:10:20 【问题描述】:

我有一个 Windows 应用程序,它允许应用程序用户将用户添加/删除到 Active Directory 组中。应用程序用户使用他们的 Windows 凭据登录到应用程序。但是,所有个人用户都无权在 AD 组中添加/删除用户。我想在内部模拟一个对 AD 组具有修改权限的用户。我正在使用下面的代码,我从 SO 的不同答案中获取它。不确定,如果我用错了。但我有一个例外。

使用此库进行模拟:https://www.codeproject.com/Articles/10090/A-small-C-Class-for-impersonating-a-User

using (new Impersonator("username", "domain", "passowrd"))
        

            using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
            
                // find your user
                UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "user");

                if (user != null)
                
                    // find the group in question
                    GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "Group Name");

                    // if found....
                    if (group != null)
                    
                        // add user to group
                        group.Members.Add(user);
                        group.Save();
                    
                
            
        

如果我使用具有适当权限的用户登录,我可以在 AD 中添加/删除用户。但不是通过冒充。

【问题讨论】:

【参考方案1】:

您无需模拟即可使用不同的凭据连接到 AD。只需使用constructor for PrincipalContext that accepts a username and password:

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, null, "username", "password"))

【讨论】:

以上是关于通过用户模拟将用户添加到活动目录的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用ansible将活动目录中的用户分配给多个组?

活动目录 powershell 从组中 添加删除 用户

Azure 移动服务 - 多个 azure 活动目录

查找当前用户活动目录组 C++

powershell 这将通过活动目录和SharePoint直接权限提供用户列表。这是未完成的,需要一堆改进

如何获取活动目录用户的 IADs 接口?