如何检查LDAP用户是否存在/活动

本文关键字:是否 用户 存在 活动 LDAP 何检查 检查 | 更新日期: 2023-09-27 18:27:05

我正在使用C#应用程序对位于Window 2008 64位服务器上的Active Directory用户进行身份验证和检查。

当我使用以下代码提供用户名和密码时,我能够成功地对用户进行身份验证:我的域名值是rootforest.com,我的用户名是admin6

        UserPrincipal usr;
        PrincipalContext ad;
        //Enter Active Directory settings
        ad = new PrincipalContext(ContextType.Domain, domainName,usrName,pswd);
        //search user
        usr = new UserPrincipal(ad);
        usr.SamAccountName = usrName;
        PrincipalSearcher search = new PrincipalSearcher(usr);
        usr = (UserPrincipal)search.FindOne();
        search.Dispose();

在另一个函数中,我想检查用户"admin6"是否存在,但我没有密码,但当我检查它时,函数会不断抛出"登录失败:用户名未知或密码错误。''r''n"。我使用的代码几乎与上面的代码相同,除了这一行:

        //Enter Active Directory settings
        ad = new PrincipalContext(ContextType.Domain, domainName);

由于这不起作用,我尝试了在网上找到的其他代码,但它们都给了我相同的错误。我开始想这可能是我如何设置我的Active Directory域?

下图是我的域名外观:

https://picasaweb.google.com/100922945973553878191/ActiveDirectory?authuser=0&feat=直接链接

有人能帮我吗?我已经被这个问题困扰了一天左右了,我似乎不知道为什么。如果你有一些代码,我可以尝试一下,那将是很棒的

如何检查LDAP用户是否存在/活动

若要检查用户是否存在,代码必须使用已知的可分辨名称执行基本级别的搜索。如果搜索结果成功,并且作为搜索结果的一部分返回的条目数大于1,则目录数据库中存在可分辨名称。

这不同于通过绑定请求来建立连接的身份验证状态。如果绑定请求成功,则根据绑定中使用的可分辨名称设置连接的身份验证状态。

也许您应该使用命令行ldapsearch工具检查可分辨名称的状态。这将使您确信可分辨名称存在,凭据是否正确,目录权限是否允许您尝试完成的任务。一旦您对可分辨名称和凭据的存在感到满意,就可以继续对代码进行故障排除。