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 的錯誤。(這個問題我在實現的時候花了很長時間才找到問題產生的原因)

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com