使用PHP登入Ldap伺服器
阿新 • • 發佈:2018-12-30
LDAP 的全稱是“輕量級目錄訪問協議(Lightweight Directory Access Protocol)”,是一種簡單的目錄協議。所謂目錄,是一種專門的資料庫,可以用來服務於任何應用程式。公司的域帳號登入採用的是Ldap登入驗證,所有的系統均使用來自同一個 LDAP 目錄的使用者資訊進行身驗證。這樣,就不需要在每個系統中儲存不同的密碼,只需要在 LDAP 目錄中儲存一個密碼即可。本文主要介紹一下PHP環境下如何通過後臺登入公司Ldap伺服器驗證使用者名稱密碼。
首先是系統的環境配置,在Linux伺服器環境下,php不預設掛載ldap擴充套件庫,因此需要新增ldap擴充套件庫,新增ldap擴充套件庫的方法有兩種:一是重新編譯php,這種方法比較繁瑣,另外一種方法是通過phpize和configure的方式載入ldap的so檔案來使php支援ldap擴充套件庫,相對來說更加的方便快捷。這裡介紹的是第二種方法。
(2)進入該目錄 cd/XXX/XXX/php-5.X.XX/ext/ldap
(3)在當前目錄執行phpize/usr/local/php/bin/phpize 生成configure檔案
(4)執行configure檔案並新增生成ldap擴充套件的引數
./configure--with-php-config --with-ldap
(5)執行make make install
執行結束後會生成ldap.so檔案
(6)找到php.ini檔案,找到extension_dir,將ldap.so檔案複製進該目錄
(7)php.ini檔案中新增extension=ldap.so
(8)重啟apache,這樣就為php添加了ldap擴充套件庫
下面介紹一下在php下使用ldap到伺服器驗證使用者名稱密碼。
$ldapConnect=ldap_connect(LDAP_SERVER_IP , LDAP_SERVER_PORT ); //建立到ldap伺服器的連線LDAP_SERVER_IP是ldap伺服器ip,LDAP_SERVER_PORT是ldap伺服器埠(預設389) $bind= @ldap_bind($ldapConnect , $user . ‘@corp.qihoo.net’,$pass); //驗證帳號密碼,ldap_bind第一個為繫結的連線,第二個為使用者名稱(注意是否有後綴),第三個為密碼。 if($bind ) {//驗證成功 $SEARCH_DN= 'ou=XXX,ou=XXX,dc=XXXX,dc=XXXX,dc=XXXX'; //搜尋基本條件值(類似於資料庫的庫和表) $SEARCH_FIELDS= array('mail','displayName', 'cn'); //需要的搜尋結果 $result= @ldap_search($ldapConnect,$SEARCH_DN,"cn=" . $user,$SEARCH_FIELDS); //第三個引數是限定搜尋結果為使用者名稱為$user(類似where後的搜尋條件) $retData = @ldap_get_entries($ldapConnect, $result); foreach($retDataas $k => $v) {//篩選整理資料,返回 return array( 'userName'=> $v['cn'][0], 'nickName'=> $v['displayname'][0] 'mail'=> $v['mail'][0] ); } } else {//驗證失敗 } ldap_close($ldapConnect); //關閉ldap連線