0

我正在使用以下代码来验证 AD 用户

string strLDAP = "LDAP://dc=ADServerIP/cn=Users,DC=Domain;
DirectoryEntry entry = new DirectoryEntry(strLDAP, usr, pwd);
object nativeObject = entry.NativeObject;
return true;

执行时出现以下异常

object nativeObject = entry.NativeObject;

System.Runtime.InteropServices.COMException (0x80005000):
System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
在 System.DirectoryServices.DirectoryEntry.Bind()
在 System.DirectoryServices.DirectoryEntry.get_NativeObject() 的未知错误 (0x80005000)

相同的代码适用于另一台 AD 服务器。可能是什么问题?

4

1 回答 1

7

您正在使用 .NET 3.5 或更高版本吗?如果是这样,您可以使用 System.DirectoryServices.AccountManagement 命名空间并轻松验证您的凭据:

// create a "principal context" - e.g. your domain (could be machine, too)
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN", usr, pwd))
{
    // validate the credentials
    bool isValid = pc.ValidateCredentials("myuser", "mypassword");
}

它很简单,很可靠,它是 100% 的 C# 托管代码 - 您还能要求什么?:-)

在这里阅读所有相关信息:

于 2012-06-04T05:04:34.590 回答