PHP中的LDAP身份验证


LDAP authentication in PHP

我试图从这些页面实现一些代码,但不成功。我需要从php做ldap身份验证,并有以下代码:

<?php
$ldap['user'] = "tester";
$ldap['pass'] = "test";
$ldap['host']   = '147.32.99.8';
$ldap['port']   = 636;
$ldap['conn'] = ldap_connect( $ldap['host'], $ldap['port'] )
or die("Could not conenct to {$ldap['host']}" );
$ldap['bind'] = ldap_bind($ldap['conn'], $ldap['user'], $ldap['pass']);
if( !$ldap['bind'] )
{
echo ldap_error( $ldap['conn'] );
exit;
}
echo "<p>";
echo ($ldap['bind'])? "Valid Login" : "Login Failed";
echo "</p><br />";
ldap_close( $ldap['conn'] );
?>

但是它不起作用。我几乎可以肯定,在用户名中缺少域。但是我在哪里能找到定义域呢?我只有IP地址。

从Softera ldap浏览器我有以下信息:URL: ldap://147.32.99.8:636/cn =测试仪,ou =员工,ou = uceeb, o = cvut

也许还有另一个错误,不仅是缺少域,而且我真的是LDAP初学者。

下面的代码有时可以正常工作:

function authUserAD($username, $password, $ldap_server="147.32.99.8") { 
  $auth_user = $username;
  if($connect = ldap_connect($ldap_server)){
    ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
    if(ldap_bind($connect, $auth_user, $password)) {
      ldap_close($connect);
      return(true);
    }
  }
  ldap_close($connect);
  return(false);
}
if(authUserAD("cn=tester,ou=staff,ou=uceeb,o=cvut", "test")) echo "<p>Login/password OK.</p>";
else echo "<p>Connection error.</p>";

但是在LDAP管理中,我必须将带密码的简单链接的要求TLS的值更改为NO,然后再次返回为YES。在这两个操作之后,它工作了。但是如何做到没有这个奇怪的操作呢