PHP連接LDAP進行登錄驗證


    基於安全性考慮,准備把PHP做的自動化平台加入ldap登錄驗證,具體做法如下:

了解背景:

      LDAP 的全稱是“輕量級目錄訪問協議(Lightweight Directory Access Protocol)”,是一種簡單的目錄協議。所謂目錄,是一種專門的數據庫,可以用來服務於任何應用程序。公司的域帳號登錄采用的是Ldap登錄驗證,所有的系統均使用來自同一個 LDAP 目錄的用戶信息進行身驗證。這樣,就不需要在每個系統中保存不同的密碼,只需要在 LDAP 目錄中保存一個密碼即可。本文主要介紹一下PHP環境下如何通過后台登錄公司Ldap服務器驗證用戶名密碼。

 

環境配置(安裝ldap擴展庫):

   

首先是系統的環境配置,在Linux服務器環境下,php不默認掛載ldap擴展庫,因此需要添加ldap擴展庫,添加ldap擴展庫的方法有兩種:一是重新編譯php,這種方法比較繁瑣,另外一種方法是通過phpize和configure的方式加載ldap的so文件來使php支持ldap擴展庫,相對來說更加的方便快捷。這里介紹的是第二種方法。

(1)通過http://www.php.net/releases/ 下載當前系統php版本對應的源碼包,解壓到服務器某目錄下

(2)進入該目錄 cd  /user/local/php/ext/ldap

ps:如果PHP目錄下面沒有發現ext文件,可以在網上下載php源碼,然后將ext文件放到php文件下;

(3)在當前目錄運行phpize/usr/local/php/bin/phpize 生成configure文件

(4)運行configure文件並添加生成ldap擴展的參數

./configure --with-php-config=/usr/local/php/bin/php-config  --with-ldap

(5)運行  make  

(6)運行  make install

(7)php.ini文件中添加extension=ldap.so;同時將ldap.dll的注釋去除(啟動ldap);

 

(8)重啟apache,這樣就為php添加了ldap擴展庫

ps:重啟Apache時如果出現端口被占用,手動將httpd的進程全部殺掉,然后重啟(具體為啥被占用還沒有深入研究);

(9)最后一步,利用PHPinfo()查看ldap是否安裝成功(下圖表示安裝成功)

到此,ldap就安裝成功了。

 

PHP代碼添加驗證

 1 /**
 2  * 添加登錄時LDAP驗證
 3  */
 4 function doLogin(){
 5     $username = "companydomain\\" . $_POST['username'];
 6     $password = $_POST['password'];
 7 
 8     $conn = ldap_connect('192.168.1.4') or die('無法連接AD服務器');;
 9 
10     if ($conn) {
11         $bind = ldap_bind($conn, $username, $password); // 如果連接了,便進行登入
12         if ($bind) {
13             $this->success("驗證通過", U('/admin/index/index'));
14         } else {
15             $this->error('登錄失敗');
16         }
17         ldap_close($conn);
18     }
19 }
View Code

 

 

 

 

未完待續。。。。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM