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

时间:2019-12-17 16:10:20

标签: c# active-directory

我有一个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 个答案:

答案 0 :(得分:0)

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

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