通过安全域上的PHP连接到非安全LDAP服务器

时间:2012-01-04 23:39:20

标签: php apache active-directory ldap

我正在尝试连接到客户端的IT人员说没有SSL证书的ldap服务器。这是在其域上的测试文件中,该文件已安装SSL。假设文件位于https://client.org/test_LDAP.php

所以我使用非常简单的代码进行连接,这在过去的一个月里与其他客户端一起运行良好:

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);

define("LDAP_SERVER","ldap://name.their.junk");
define("LDAP_BASE","CN=Users,DC=their,DC=junk");

$username = 'CN=Username,'.LDAP_BASE;
$password = "Password";

$ldap = ldap_connect(LDAP_SERVER, 389) or die("Can't connect to LDAP server");

ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3) ;

if (ldap_bind($ldap, $username, $password)) {
    ldap_unbind($ldap);
    echo 'OK - Login valid';
} else {
    die(ldap_error($ldap) . ' (' . ldap_errno($ldap) . ')');
}

如果我从安装了SSL的域运行代码,这是否意味着我必须使用ldaps和端口636,即使客户端的AD服务器没有证书?我尝试了两个端口的代码,以及ldaps:和ldap:在一个不安全的启动域以及他的安全的实时域。似乎没什么用。但他发誓用户名和密码并且所有变量都是正确的,并告诉我使用他们的主机名的IP instaed(例如ldap:000.000.000.00)。

我在这里做错了吗?

是的,我在服务器端正确配置了LDAP,因为我们最近能够与另一个客户端完全相同。

非常感谢任何见解。

1 个答案:

答案 0 :(得分:1)

如果您尝试在Windows 2003 Server Active Directory或更高版本上执行搜索,则似乎必须将LDAP_OPT_REFERRALS选项设置为0:

ldap_connect(..) 
ldap_set_option ($ldap, LDAP_OPT_REFERRALS, 0); 
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_bind(..)