针对AD异常验证用户名和密码

本文关键字:密码 用户 验证 AD 异常 针对 | 更新日期: 2023-09-27 18:00:09

我有以下代码来验证Active Directory用户(Win7上的VS2008)。

try
{
    PrincipalContext pc = new PrincipalContext(ContextType.Domain, strDomainName))
    isPass = pc.ValidateCredentials(strDomainUserName, strDomainUserPass);
}
catch (Exception ex)
{
    Logger.Log("authentiate domain user fail: {0},{1}", ex.ToString(), strDomainUserLoginName);
}

对于某些AD用户,这是可以的,但对于AD用户,我会得到以下异常:System.DirectoryServices.Protocols.DirectoryOperationException: The server cannot handle directory requests.

System.DirectoryServices.Protocols.ErrorChecking.CheckAndSetLdapError(Int32 error)
System.DirectoryServices.Protocols.LdapSessionOptions.FastConcurrentBind()
System.DirectoryServices.AccountManagement.CredentialValidator.BindLdap(NetworkCredential creds, ContextOptions contextOptions)
System.DirectoryServices.AccountManagement.CredentialValidator.Validate(String userName, String password)
System.DirectoryServices.AccountManagement.PrincipalContext.ValidateCredentials(String userName, String password)

那么Active Directory域用户设置会导致这样的异常吗?

针对AD异常验证用户名和密码

对不起,我上面的描述是错误的。事实上,所有的AD用户验证都会出现这样的异常。

工作环境是:(1) 如果验证码在正是AD机器的机器上运行,则该代码将出现此类异常。(2) 否则,就没有这样的例外。

附加上下文选项。协商ValidateCredentials的参数以解决问题。