我需要在php的active目录中验证用户(使用yii framewrok)。 在网络中的一台计算机上,我有一台带有活动目录的Windows 2008服务器的虚拟机(使用端口5000),我尝试使用ldap和authenticate用户连接它。控制器名称是(server1.domain_name)。
我的代码就像这样:
$hostName = '192.168.139.94';
$port = 5000;
$userName = 'User1@domain_name';
$password = 'password';
$ldap = ldap_connect($hostName, $port);
if ($bind = ldap_bind($ldap, $userName, $password)) {
echo 'success';
// log them in!
} else {
// error message
echo 'failed';
}
但要警告:
ldap_bind() [<a href='function.ldap-bind'>function.ldap-bind</a>]: Unable to bind to server: Can't contact LDAP server
你能告诉我这是什么问题吗?如何获得更多信息导致问题?
答案 0 :(得分:2)
非常奇怪的端口5000用于Active-Directory。本机Active-Directory在389上等待,Lightweigh Directory Server(LDS)在端口 50000 上自然等待,当机器上存在AD时。你确定这个港口吗?
验证端口后,您可以在ldap_connect
和ldap_bind
之间添加这两行
ldap_connec(...)
ldap_set_option ($ldap, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind(...)
答案 1 :(得分:0)
这是一个愚蠢的错误,使用了389端口,而不是5000.我只是被误导了。谢谢你的所有答案。
答案 2 :(得分:-1)
问题是389端口使用的不是5000。