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

 

 

 

 

未完待续。。。。。。

 

posted @ 2018-01-11 17:52  磨牙君  阅读(3354)  评论(0编辑  收藏  举报