ldap_bind 的注意事项

2019-08-05 17:41 By "Powerless" 3246 0 2

ldap_bind(): Unable to bind to server: Can't contact LDAP server

方法一:

    这是最基本的方法,先确认PHP脚本实际上可以链接LDAP服务器。

    以下是需要注意的一些事情:

        是否有防火墙阻止您访问AD / LDAP服务器?

        LDAP服务器是否正在运行?

        它是否在Active Directory服务器上启用?

        您在ldap_bind中使用的密码是否正确?

        您是否在为用户使用RDN而不仅仅是用户名?

        例如,在Windows上,这看起来像:"uid=USERNAME,cn=users,dc=HOSTNAME,dc=DOMAIN,dc=com"

    这是最基本的方法,但我经常会遇到类似的事情,所以我想我一定要想到。


方法二:

    此解决方案仅适用于连接到安全LDAP服务器的情况。

    很多人遇到这个问题。以下有关Novell网站的文章概述了Windows或Linux使安全LDAP连接正常工作的基本步骤,并显示了使用ldap_bind的示例。

    http://www.novell.com/coolsolutions/tip/5838.html


方法三:

    当你启用php_ldap时。windows用户必须在(C:\OpenLDAP\sysconf)目录,linux用户必须在(/etc/openldap)目录,创建一个(ldap.conf)文件因为这是在DLL内部进行了硬编码。在文件中写入以下内容即可:

TLS_REQCERT never

https://lists.horde.org/archives/sork/Week-of-Mon-20040503/001578.html


例1:

$username = 'test';
$passwd = 'UlkIAWH23';
$con = @ldap_connect('ldaps://the.ldap.server', 636);
var_dump(@ldap_bind($con, $username, $passwd));


例2:

$ldaphost = "ldap.what.at.greatnet.com";
$ldapport = 389;

$ds = ldap_connect($ldaphost, $ldapport)
or die("Could not connect to $ldaphost");

if ($ds) 
{
    $username = "test";
    $upasswd = "UlkIAWH23";

    $ldapbind = ldap_bind($ds, $username, $upasswd);
                               
    if ($ldapbind) 
        {print "Congratulations! $username is authenticated.";}
    else 
        {print "Nice try, kid. Better luck next time!";}
}


评 论

View in WeChat

Others Discussion

  • PHP练习-移动数组内的0到最后并保持其他元素顺序不变
    Posted on 2020-08-14 20:32
  • PHP设计模式 - 委托模式
    Posted on 2019-04-25 16:15
  • HTTP头中隐藏PHP版本号
    Posted on 2021-01-11 16:38
  • Composer 异常 [ErrorException]
    Posted on 2019-11-25 17:55
  • PHP8.1 性能基准测试
    Posted on 2022-10-08 17:40
  • 必学十大经典排序算法,看这篇就够了
    Posted on 2019-11-18 16:30
  • Linux工具 - NM目标文件格式分析
    Posted on 2019-04-24 10:29
  • PHP练习-爬楼梯问题
    Posted on 2020-08-14 23:56