PHP鏈接LDAP進行登陸驗證

    基於安全性考慮,準備把PHP作的自動化平臺加入ldap登陸驗證,具體作法以下:php

瞭解背景:數據庫

      LDAP 的全稱是「輕量級目錄訪問協議(Lightweight Directory Access Protocol)」,是一種簡單的目錄協議。所謂目錄,是一種專門的數據庫,能夠用來服務於任何應用程序。公司的域賬號登陸採用的是Ldap登陸驗證,全部的系統均使用來自同一個 LDAP 目錄的用戶信息進行身驗證。這樣,就不須要在每一個系統中保存不一樣的密碼,只須要在 LDAP 目錄中保存一個密碼便可。本文主要介紹一下PHP環境下如何經過後臺登陸公司Ldap服務器驗證用戶名密碼。apache

 

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

   

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

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

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

ps:若是PHP目錄下面沒有發現ext文件,能夠在網上下載php源碼,而後將ext文件放到php文件下;this

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

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

./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

 

 

 

 

未完待續。。。。。。

相關文章
相關標籤/搜索