基於安全性考慮,准備把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 }
未完待續。。。。。。