我使用以下代码验证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):未知错误(0x80005000)
在System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
在System.DirectoryServices.DirectoryEntry.Bind()
在System.DirectoryServices.DirectoryEntry.get_NativeObject()
相同的代码适用于另一台AD服务器。可能是什么问题?
答案 0 :(得分: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#托管代码 - 你还能要求什么? : - )
在这里阅读所有相关内容: