LDAP连接AD域失败原因分析

26950阅读 3评论2013-09-29 skyornig
分类:架构设计与优化

                                                                                                 LDAP连接AD域失败原因分析 

Windows域管理机制ADLDAP协议的一种实现,通过LDAP的接口可以实现对AD的编程,很多项目的同一用户管理都会用到AD域管理,比如虚拟化平台项目。下面是使用LDAPAPI连接AD域时出现的问题,供大家借鉴。

点击(此处)折叠或打开

  1. <?php
  2. // using ldap bind

  3. $ldaprdn = "oa\zhangsan"; // ldap rdn or dn

  4. $ldappass = "ad123456"; // associated password

  5. // connect to ldap server
  6. $ldapconn = ldap_connect("rd.nic.ac.cn")
  7.     or die("Could not connect to LDAP server.");
  8. if ($ldapconn) {
  9.     // binding to ldap server

  10.     echo "come on!".$ldapconn;
  11.     echo "你不好!";
  12.     $ldapbind = ldap_bind($ldapconn);
  13.     //$ldapbind = ldap_bind($ldapconn,$ldaprdn,$ldappass);

  14.     // verify binding
  15.     if ($ldapbind) {
  16.         echo "LDAP bind successful...";
  17.     } else {
  18.     //echo ldap_error($ldapconn);

  19.         echo "LDAP bind failed...";
  20.     }
  21. }
  22. ?>

错误内容:


点击(此处)折叠或打开

    come on!Resource id #2你不好!
    Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in E:\www\web\testLDAP.php on line 10
    LDAP bind failed...

解决办法:

1、ldap_connect():当连接成功时,返回一个正的连接标示符,连接错误就返回false。当使用openLDAP 2.x.xldap_connect()总是返回一个资源标示符,但是并没有真正连接,只是初始化了一些基本参数,在执行一些ldap_*函数时,通常是ldap_bind,才会真正连接。

 

2、搭建AD环境,需要建立一个DNS域服务器,所以在连接ADldap_connect(域名),该域名必须能找到(能够ping通该域名),也就是需要配置本机的DNSAD环境中DNS域服务器的IP,这样就能连接上AD了。

 

3、另外可以直接通过连接AD域中DNS服务器的IP,修改$ldapconn = ldap_connect ("rd.ncic.ac.cn")$ldapconn = ldap_connect()

    问题:

    根据程序的逻辑分支,错误的以为已经找到AD域并连接成功,事实上ldap_connect()可能只是完成了一些参数的初始化,并未真正连接。



上一篇:CloudSim源码分析之DatacenterBroker--processEvent()(一)
下一篇:LDAP连接AD修改用户密码分析

文章评论