gpt4 book ai didi

c# - 如何检查 LDAP 用户是否存在/活跃?

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:54 26 4
gpt4 key购买 nike

我正在使用 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=directlink

谁能帮我解决这个问题?最近一天左右我一直被这个问题困扰,我似乎无法找出原因。如果你有一些代码我可以试试就太好了

最佳答案

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

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

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

关于c# - 如何检查 LDAP 用户是否存在/活跃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com