PHP连接LDAP(OpenLDAP和Wins Active Directory)的用法

PHP连接LDAP(OpenLDAP和Wins Active Directory)的用法 

关于这个问题网上有很多资料,但是或多或少都存在一些问题。下面讲一下我的方法并加了几个我碰到的花了大量时间才解决的问题。

环境Linux + PHP + Apache
1、php要能够连接上ldap服务器,必须安装php-ldap模块,并修改php.ini配置,增加配置项extension=ldap.so,之后重启apache服务器。

2、连接LDAP服务器

  1. $hostname="example.com";
  2. $port = 389;
  3. $username_linux = "cn=Manager,dc=example,dc=com"; // Linux下管理员用户名的格式
  4. $username_windows = "example@example.com"; // Windows下管理员用户名的格式
  5. // 或者$username_windows = "example";
  6. $password = "secret";
  7. $basedn = "dc=example,dc=com";

  8. if( $port )
  9. {
  10.         $ds=ldap_connect($hostname,$port);
  11. }
  12. else
  13. {
  14.         $ds=ldap_connect($hostname);
  15. }

  16. if( $ds )
  17. {
  18.         ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION,3);
  19.         ldap_set_option($ds, LDAP_OPT_REFERRALS,0);
  20.         
  21.         $r=ldap_bind($ds,$username_linux,$password);
  22.         $sr=ldap_search($ds, $basedn,"(objectClass=*)");
  23.         echo "Number of entires returned is " . ldap_count_entries($ds, $sr) . "<br />";
  24.         $info = ldap_get_entries($ds, $sr);        
  25.         var_dump($info);
  26.     ldap_close($ds);

  27. else 
  28. {
  29.     echo "<h4>Unable to connect to LDAP server</h4>";
  30. }
复制代码


注意:
1、LDAP服务器在Linux(OpenLDAP)和Windows(Active Directory)下绑定用户名和密码时用户名的格式是不一样的。
2、Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Invalid credentials用户名或者密码不正确。
3、连接windows活动目录时,所使用的账号必须对域具有管理权限,否则即便能绑定成功,在调用ldap_search()查找数据时也会出现Warning: ldap_search() [function.ldap-search]: Search: Operations error 的错误。(这个问题我在实现的时候花了很长时间才找到问题产生的原因)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值