使用 PHP 进行 LDAP 身份验证

anu*_*jin 5 php authentication ldap

我正在尝试使用 PHP 进行 LDAP 身份验证。
下面是我的代码:

<?php

$ldaphost = 'ldap://ldapServer';
$ldapport = 389;

$ds = ldap_connect($ldaphost, $ldapport)
or die("Could not connect to $ldaphost");
    ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
//ldap_set_option($ds, LDAP_OPT_DEBUG_LEVEL, 7);
if ($ds) 
{
    $username = "testuser@domain.com";
    $upasswd = "testpass";

    $ldapbind = ldap_bind($ds, $username, $upasswd);


    if ($ldapbind) 
        {print "Congratulations! $username is authenticated.";}
    else 
        {print "Access Denied!";}


}
?>
Run Code Online (Sandbox Code Playgroud)

但它会引发以下错误:

PHP 警告:: ldap_bind()无法绑定到服务器:无法联系 LDAP 服务器

知道如何解决它吗?

注意:ldap.config当我在某个论坛上遇到这个术语时,我们是否需要在某个地方归档。我的机器上没有看到任何此类文件。我php_ldap.dll在 ext 文件夹中并使用Windows.

wik*_*ier 1

我猜ldap_connect()不需要协议,所以这个天真的补丁应该可以解决您的问题:

--- ldap.php.bak    2012-09-04 10:52:29.563203493 +0200
+++ ldap.php    2012-09-04 10:52:46.807203766 +0200
@@ -1,6 +1,6 @@
 <?php

-$ldaphost = 'ldap://ldapServer';
+$ldaphost = 'ldapServer';
 $ldapport = 389;

 $ds = ldap_connect($ldaphost, $ldapport)
Run Code Online (Sandbox Code Playgroud)

查看官方文档中的基本示例。