我有一个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添加/删除用户。但不是冒充。
答案 0 :(得分:0)
您无需模拟就可以使用不同的凭据连接到AD。只需使用constructor for PrincipalContext
that accepts a username and password:
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, null, "username", "password"))