2013-10-16 82 views
4

我试图在我的ZF2开发的Web应用程序中实现LDAP身份验证。 LDAP认证在Windows 7中工作正常。无法连接LDAP服务器 - 在ldap_bind()中发出问题;

但是,将应用程序移至LINUX机器后,LDAP认证不起作用。我总是得到错误的:警告:的ldap_bind():无法绑定到服务器:无法在线联系LDAP服务器LdapConnect.php 20

我用脚本为:

$ldaphost = "ldap://xxxx.net"; 
$ldapport = 389; 
$ds = ldap_connect($ldaphost, $ldapport) or die("Could not connect to $ldaphost"); 
if ($ds) 
{ 
    $username = "[email protected]"; 
    $upasswd = "password"; 
    $ldapbind = ldap_bind($ds, $username, $upasswd); 

    if ($ldapbind) 
    { 
     print "Congratulations! you are authenticated successfully."; 
    }else{ 
     print "Better luck next time!"; 
    } 
} 

我应该安装任何软件包还是应该进行任何配置设置?

注:如果我给的IP地址,然后它工作正常,但如果我给了域名,那么它是不工作。

请帮我解决问题。

+0

夫妇调试技术我建议是1)确保你的Linux节点可以ping你的LDAP节点2)确保你的LDAP绑定到正确的IP地址。我看到LDAP服务器绑定到localhost/127.0.0.1,并导致远程应用程序连接到它。 – beyonddc

+0

Ldap节点ping工作正常。我已经给出了适当的IP地址进行绑定。事件不起作用。同样的事情在开发LINUX机器上工作正常,但不在服务器LINUX机器上。 Plz帮助我。 – KumarA

+0

你有没有在Linux节点上安装php-ldap? – ffledgling

回答

2

该库可能在​​2或不同版本之间不同。你会惊讶于有多少变种的ldap客户端。在你的立场中,我会(如果有的话)使用ldap客户端以几种不同的方式进行相同类型的连接。

例如标准ldapsearch上的“-x”: -x使用简单身份验证代替SASL。

所以你可以表达这样的连接:

的ldapsearch -h xxxx.net -p 389(ETC) 的ldapsearch -x -h LDAP://xxxx.net:389(这实际上应该是 - H ..)

等等。 您的代码之外的东西也有可能成为问题。 Prod服务器通常具有对服务器/客户端透明的防火墙和代理(例如F5)。 确保您的最终代码具有用于绑定和搜索的异常处理。我对php的实现并不太熟悉,而且doco很薄弱。通常你会使用同步绑定。

你能证实上面的代码和你在Windows上完全一样吗?我问的原因是,看这里:http://php.net/manual/en/function.ldap-connect.php看来,你可能会混合2种类型的绑定。我绝对不会在标准python中那样做。

因此,如果使用URI通常你会做这样的:

ldap_connect("ldap://blah:389") 

,如果您是通过主机/端口组合连接:

ldap_connect("blah","389") 

以最小的异常信息我最好的猜测是它实际上试图绑定到端口“389”上的主机名“ldap://xxxx.net”。

相关问题