我需要使用Active Directory查询某些信息,只有在通过SSL进行身份验证时才能访问。我可以毫无问题地建立匿名连接,但在尝试使用SSL时,我总是得到“LDAP服务器不可用错误”。关于这一点有很多论坛主题,我已经对它们进行了评论,但还没有找到解决方案。此代码是在IIS Express上运行的ASP.NET MVC应用程序。
LdapConnection conn = new LdapConnection("ldap.xxx.com:636/OU=xxx,DC=xxx,DC=xxx,DC=xxx");
//conn.AutoBind = false;
conn.SessionOptions.ProtocolVersion = 3;
conn.AuthType = AuthType.Basic; //Tried with Negotiate as well
conn.Credential = new NetworkCredential(@"domain\user", "userPW", "domain");
conn.SessionOptions.SecureSocketLayer = true;
conn.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback((dev, cer) => true);
//conn.Timeout = new TimeSpan(1, 0, 0);
conn.Bind();
我使用带有PrincipalContext的容器字符串来验证此帐户的凭据,验证成功(发生在此代码之前)。容器将我放入正确的节点,并且帐户凭据是匹配的。这就是为什么这个错误让我困惑的原因。协议版本也是正确的。无论证书如何,我都将verifycert回调设置为true。
错误是在第一行抛出,如果我删除它创建连接的容器,但是当我调用.Bind()时无限期挂起。如果在建立连接后指定域,则会在.Bind()上引发“不可用错误”。我不明白为什么它失败了容器,因为它在使用PrincipalContext传入时起作用。
感谢您的帮助。