PrincipalContext.ValidateCredentials 失败,并显示"The server cannot handle directory requests."



我有一个应用程序,用户可以根据我们的Active Directory进行身份验证:

private bool Authenticate()
{
using (var context = new PrincipalContext(ContextType.Domain, Environment.UserDomainName)) 
{
return context.ValidateCredentials(this.Username.Text.Trim(), this.Password.Text.Trim());
}
}

它运行了好几年。现在,我们的Windows7机器被Windows10取代,一些用户会收到这个错误:

服务器无法处理目录请求。

System.DirectoryServices.Protocols.ErrorChecking.CheckAndSetLdapError(Int32错误)
在System.DirectoryService.Protocols。LdapSessionOptions.FastConcurrentBind(字符串用户名,字符串密码)
在c:\Developing\Source\DPI\Client\DPI\FormLogin.cs:line 280 的DPI.FormLogin.Authenticate()处

该错误仅出现在某些用户身上,而不是一直出现。也许这与现在在Win 10上比以前在Win 7上更严格的安全设置有关。

知道怎么解决吗?如何查询当前连接的LDAP服务器?也许我们的服务器配置略有不同,问题仅限于一台可能配置错误的服务器。

是的,添加ContextOptions.Negotiate解决了问题:

private bool Authenticate()
{
using (var context = new PrincipalContext(ContextType.Domain, Environment.UserDomainName)) 
{
return context.ValidateCredentials(this.Username.Text, this.Password.Text, ContextOptions.Negotiate);
}
}

相关内容

最新更新