Active directory ValidateCredentials LDAP服务器不可用

Active directory ValidateCredentials LDAP服务器不可用,active-directory,ldap,directoryservices,Active Directory,Ldap,Directoryservices,目前,我正在使用PrincipalContext类调用ValidateCredentials方法来检查用户凭据。在出现一个相当“奇怪”的错误之前,它在我们的2环境中工作正常 var configuration = ConfigurationManager.GetSection("PrincipalContextConfiguration") as PrincipalContextConfigurationSection; var principalContext = new PrincipalC

目前,我正在使用PrincipalContext类调用ValidateCredentials方法来检查用户凭据。在出现一个相当“奇怪”的错误之前,它在我们的2环境中工作正常

var configuration = ConfigurationManager.GetSection("PrincipalContextConfiguration") as PrincipalContextConfigurationSection;
var principalContext = new PrincipalContext(configuration.ContextType, configuration.Name, configuration.Container);
principalContext.ValidateCredentials(userName, password);

configuration.ContextType = "Domain"
configuration.Name = "example.local"
configuration.Container = "CN=Users,DC=example,DC=local"
以上是我们当前代码的示例,为便于查看而简化。如上所述,每当我们需要验证凭证时,我们都会创建一个新的PrincipalContext

我们的错误是,如果我们提供有效的用户名和密码,则此验证凭据可以正常工作。但对于抛出此错误的特定计算机,只要提供了无效的用户名和密码,就会抛出异常并显示消息“LDAP服务器不可用”

有人能告诉我应该从哪里开始找到这一问题的根源吗。我们感到奇怪的是,该方法仅在用户名和密码不正确时才会引发该异常。我们通过使用PowerShell调用该方法来验证这一点


我不是广告方面的专家。谢谢。

我遇到了完全相同的问题,但只有在通过636端口连接时才会遇到。默认端口(389)似乎没有问题。我有一个解决方法(基本上是把它放在一个try/catch中),但如果有,我希望有一个更好的解决方案。我面临着同样的问题,你有关于这种行为的线索吗?刚刚开始遇到这个问题。有人想出了解决方案吗?我不确定你们是否找到了解决方案,但我们所做的是在选项中指定
ContextOptions.Negotiate | ContextOptions.SecureSocketLayer
。这最终消除了该环境中的问题,但确实需要我们为LDAP设置SSL证书。我没有深入研究内部(需要对库进行一些反编译),但根据观察,默认选项
ContextOptions.Signing | ContextOptions.Sealing
是罪魁祸首。希望有更好的理解者能够解释这一点,并帮助有同样问题的人。