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代码添加验证
/**
* 添加登录时LDAP验证
*/
public function doLogin(){
$username = "companydomain\\".$_POST['username'];
$password = $_POST['password'];
$conn = ldap_connect('192.168.1.4') or die('无法连接AD服务器');;
if ($conn)
{
$bind = ldap_bind($conn,$username, $password); // 如果连接了,便进行登入
if ($bind)
{
$this->success("验证通过",U('/admin/index/index'));
} else {
$this->error('登录失败');
}
ldap_close($conn);
}
未完待续。。。。。。
PHP连接LDAP进行登录验证的更多相关文章
- Python实现LDAP用户名密码验证
网上借鉴了不少东西,下面是python代码,备份后用. 思路,因为每个用户的组都不一样,这样就导致了dn不一致的情况, 据需要先根据用户名获取该用户的dn,然后再bind用户名和密码进行验证. 反正是 ...
- java桥连接sql server之登录验证及对数据库增删改查
一:步骤 1.sql server建立数据库和相关表 2.建立数据源 (1).打开控制面板找到管理,打开ODBC选项或直接搜索数据源 (2).打开数据源配置后点击添加,选择sql server点击 ...
- 3月9日(用 DBHelper 工具连接 mysql 数据库 实现登录验证)
一. 用DBHelper 与mysql 连接 实现最简单的登录验证. (1)新建 web project ----->选择src导入 DBHelper 工具包-------->选择web ...
- java连接sql server--关于登录验证及对数据库增删改查应用
一:步骤## 1.sql server建立数据库和相关表 2.建立数据源 (1).打开控制面板找到管理,打开ODBC选项或直接搜索数据源 (2).打开数据源配置后点击添加,选择sql server ...
- php 连接redis,并登录验证
环境: centos7 上安装了redis, 同时安装了php的redis扩展 yum install redis yum install php-pecl-redis redis服务端设置了登录密码 ...
- ldap登录验证的通用步骤
和利用数据库进行验证类似,LDAP中也是利用登陆名和密码进行验证,LDAP中会定义一个属性password,用来存放用户密码,而登陆名使用较多的都是mail地址.那怎么样才能正确的用LDAP进行身份验 ...
- AD域登录验证
AD域登录验证 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5799699.html 需求 系统在登录的时候,需要根据用户名和密码验证连接域服务器进行 ...
- 在Windows和UNIX下利用PHP和LDAP进行身份验证
我现在的老板曾要求我为企业内部的Web服务提供一种标准的身份验证方法.我遇到的一个主要问题就是我们公司主要使用了两种平台:UNIX和.所以,我的第一个想法并不很成功:它要求每个员工都使用UNIX或者L ...
- 如何使用Python连接ldap
如何使用Python连接ldap 好多使用ldap认证的软件都是Python的,比如superset和airflow, 好吧,他们都是airbnb家的.在配置ldap的时候可能会出现认证失败,你不知道 ...
随机推荐
- LABjs、RequireJS、SeaJS 哪个最好用?为什么?
感谢玉伯在知乎的奉献,下面全文转载:http://www.zhihu.com/question/20342350/answer/14828786 LABjs 的核心是 LAB(Loading and ...
- Nginx平台构架
深入理解Nginx模块发开与架构解析读书笔记. nginx在启动后,在unix系统中会以daemon的方式(能够手动关闭 nginx.conf daemon off)在后台执行,后台进程包括一个mas ...
- LINUX6安装Oracle10g无法启动安装界面解决
***********************************************声明*************************************************** ...
- 四.RabbitMQ之发布/订阅(Publish/Subscribe)
一.基础知识点 在上述章节中,我们理解的RabbitMQ是基于如下这种模式运作的. 而事实上,这只是我们简单化了的模型的结果,真正的模型应该是这样的. P:Producer 生产者,生产消息,把它放进 ...
- 分布式:2PC,3PC,Paxos,Raft,ISR [转]
本文主要讲述2PC及3PC,以及Paxos以及Raft协议. 两类一致性(操作原子性与副本一致性) 2PC协议用于保证属于多个数据分片上的操作的原子性.这些数据分片可能分布在不同的服务器上,2PC协议 ...
- 配置nginx支持path_info模式
简介:我们用thinkphp,CodeIgniter框架的时候,地址基本都是IP/index.php/group_controller?***的模式,通过index.php入口访问php文件 这种模式 ...
- 日期函数ADD_MONTHS,MONTHS_BETWEEN,LAST_DAY,NEXT_DAY
- Scrapy爬虫实例——校花网
学习爬虫有一段时间了,今天使用Scrapy框架将校花网的图片爬取到本地.Scrapy爬虫框架相对于使用requests库进行网页的爬取,拥有更高的性能. Scrapy官方定义:Scrapy是用于抓取网 ...
- getchar() 、 scanf() 、流与缓冲区
C中的缓冲区一直是debug的重灾区,今天在写一个命令行界面的时候又遇到了这个问题,所以来总结一波. 两函数的不同之处 scanf() 会把 stdinBuff 中的特定格式数据取出,非特定格式数据则 ...
- ES6初体验
开始学习ES6,打算走全栈这条路了,废话不多说,开始吧. 首先安装node环境,去node官网上面下载node最新版本的,我用的系统是window10,所以我只需要下一步下一步就行了,安装完成后打开c ...