使用C#中的AD凭据登录

时间:2012-06-04 02:46:14

标签: c# asp.net active-directory

我使用以下代码验证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服务器。可能是什么问题?

1 个答案:

答案 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#托管代码 - 你还能要求什么? : - )

在这里阅读所有相关内容: