0

我想检查用户名是否存在于 Active Directory 中?取决于我需要执行代码。

我有域和用户名。如何使用 DirectorySearcher 检查用户名是否存在于 Active Directory 中而无需密码。

4

2 回答 2

1

您的进程必须在活动目录用户下运行,否则在创建 PrincipalContext 时您还应提供活动目录用户凭据。这是通过用户名查找用户的简单代码:

  var context = new PrincipalContext(ContextType.Domain, "yourDomainHost");

  var userInfo = UserPrincipal.FindByIdentity(context, userName);

编辑:

如果你需要使用目录搜索器,你可以试试这个方法:

     bool ContainsUser(string domain, string userName)
    {
        string ldapBase = string.Format("LDAP://{0}", domain);

        // in case if process is not running under AD user use: new DirectoryEntry(ldapBase, "userName", "password")
        using (var entry = new DirectoryEntry(ldapBase)) 
        {
            using (var searcher = new DirectorySearcher(entry))
            {
                searcher.Filter = string.Format("(sAMAccountName={0})", userName);
                return searcher.FindOne() != null;
            }
        }
    }
于 2013-08-26T11:53:27.570 回答
0

您可以尝试这种方法:

DirectoryEntry entry = new DirectoryEntry("LDAP://DomainName");
DirectorySearcher dsearcher = new DirectorySearcher(entry);
dsearcher.Filter = "samaccountname=" + username;
SearchResult result = dsearcher.FindOne();
if(null!=result) //User Exists
{
  //Do your stuff here
}
else //User Not Exists
{
  //Do your stuff here
}

上面的代码假定您的 AD 服务器允许匿名访问。

于 2013-08-26T12:41:00.093 回答