[英]getting error when authenticate against active directory with php ldap
[英]PHP LDAP Connection to Authenticate against Active Directory from External Server
我有一个外部Web服务器试图通过LDAP对内部服务器上的Active Directory进行身份验证。 我可以在本地进行连接和身份验证,尽管使用相同的代码(切换主机和端口)无法在外部进行身份验证。 我们还有其他能够连接和认证的服务,例如Attask(http://www.attask.com/)。
外部服务器当前是Media Temple上的Linux(gs),运行PHP 5.3.15,并且已启用LDAP支持。
内部服务器当前是带有LDAP和Active Directory的Windows Server 2008。
下面的代码是我正在使用的当前PHP,该PHP能够在本地连接,但是在外部服务器上有问题。 它基本上使用PHP LDAP连接字符串并尝试进行绑定。 如果失败,它将尝试匿名绑定。 两者都无法在外部工作,并返回错误:无法联系LDAP服务器。
<?php
$username = 'username';
$password = 'password';
$ldapconfig['host'] = '00.000.000.000';
$ldapconfig['port'] = '636';
$ldapconfig['basedn'] = 'dc=client,dc=eqc,dc=local';
$ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ds, LDAP_OPT_NETWORK_TIMEOUT, 10);
$dn="".$username."";
if ($bind=ldap_bind($ds, $dn, $password)) {
echo("Login correct");
} else {
echo("Unable to bind to server.</br>");
echo("msg:'".ldap_error($ds)."'</br>".ldap_errno($ds)."");
if ($bind=ldap_bind($ds)) {
$filter = "(cn=*)";
if (!($search=@ldap_search($ds, $ldapconfig['basedn'], $filter))) {
echo("Unable to search ldap server<br>");
echo("msg:'".ldap_error($ds)."'</br>");
} else {
$number_returned = ldap_count_entries($ds,$search);
$info = ldap_get_entries($ds, $search);
echo "The number of entries returned is ". $number_returned."<p>";
for ($i=0; $i<$info["count"]; $i++) {
var_dump($info[$i]);
}
}
} else {
echo("Unable to bind anonymously<br>");
echo("msg:".ldap_error($ds)."<br>");
}
}
?>
一些注意事项:
外部LDAP服务器正在使用LDAPS,因此建议的主机在端口636上为ldaps://00.000.000.000
我已经尝试与“用户名”以及“用户名@ 00.000.000.000”绑定
有一个防火墙,但是,外部服务器可以成功ping通内部LDAP服务器,因此在该级别上进行连接。
任何帮助将不胜感激。 如果有服务器设置或类似性质的事情,不妨了解一下。 另外,我已经检查了ADFS,虽然找不到一个简单的脚本来进行测试,但是如果不起作用,则会花费大量时间无休止地进行测试。
从Linux机器使用LDAPS连接到AD时,我总是不得不添加该行
TLS_REQCERT never
在/etc/ldap.conf或等效文件中(可能需要重新启动apache-不确定)。 您也可以为主机尝试格式“ ldaps://server.domain.tld:636”,尽管我认为这不是问题。
我在http://en.gentoo-wiki.com/wiki/Active_Directory_Authentication_using_LDAP中找到了一些不错的文档,尽管目前看来该文档已经不存在了。 Google的缓存版本: http : //webcache.googleusercontent.com/search? q=cache: http : //en.gentoo-wiki.com/wiki/Active_Directory_Authentication_using_LDAP
您是否检查过SSL证书错误? 您使用的是自签名证书还是正式证书?
“如果你正在使用SSL(如LDAPS)和的ldap_bind抛出‘无法绑定到服务器:’错误,请检查在ldap_connect使用的主机名的SSL证书中相匹配的‘CN’的LDAP服务器” 来源
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.