如何在代码中指定备用凭据?

时间:2010-08-13 11:29:02

标签: c# permissions active-directory

我想运行此功能,或至少使用不同的凭据从AD中删除计算机帐户的位:

 public static void DeleteMachineAccount(String MachineName)
        {
            String MachineLdapPath = LdapPath(MachineName);
            String OuLdapPath = MachineLdapPath.Replace("CN=" + MachineName + ",", "");

            Console.WriteLine(MachineLdapPath);
            Console.WriteLine(OuLdapPath);

            if (DirectoryEntry.Exists(MachineLdapPath))
            {
                try
                {
                    DirectoryEntry MachineOu = new DirectoryEntry(OuLdapPath);
                    DirectoryEntry MachineToDelete = new DirectoryEntry(MachineLdapPath);
                    MachineOu.Children.Remove(MachineToDelete);
                    MachineToDelete.CommitChanges();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message.ToString());
                }
            }

        }

(LdapPath函数只返回指定机器名的LDAP路径。)

我如何/在哪里指定一些不同的凭据以允许它运行?目前我被拒绝访问,因为我使用的帐户无权执行此操作。

谢谢,

2 个答案:

答案 0 :(得分:1)

您可以使用提供身份验证的DirectoryEntry类的重载。这将导致您使用此特定用户的权限从DirectoryServices运行LDAP查询。需要注意的是,为了做到这一点,您需要传递凭据(需要由用户存储或输入),因此请小心处理它们。以纯文本格式存储它们可能会导致系统安全问题。

New DirectoryEntry(ldapRoot, _activeDirectoryUsername, _activeDirectoryPassword);

答案 1 :(得分:0)

您需要使用模拟。最简单的方法是实际“借用”任何调用此方法的人的权限。例如,如果从命名管道或WCF调用中调用此方法,则有内置方法可以模拟调用方并代表它们执行此操作。