您的位置:首页 > 运维架构 > Linux

centos6.x安装php扩展ldap及使用

2016-07-07 11:29 597 查看
由于公司有些项目使用ldap协议进行用户认证,所以安装下

ldap是基于TCP/IP协议的目录访问协议,是Internet上目录服务的通用访问协议。LDAP的出现简化了X.500目录的复杂度,降低了开发成本,是X.500标准的目录访问协议DAP的子集,同时也作为IETF的一个正式标准。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。

注意事项:

1、ldap是php自带的,只需进入到php源码包的ext目录,如果是yum安装的,可下载对应php源码版本再进入ext目录

2、ldap也有图形管理界面,一般用phpldapadmin

1、安装ldap

# cd ext/ldap/

# phpize

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

# make  && make install 

2、php加载ldap扩展

extension_dir = "/usr/lib64/php/modules/"

extension=ldap.so

3、测试,查看phpinfo信息,如下图所示:



4、php代码测试,具体操作可参考手册:http://php.freehostingguru.com/group.php-25.php

<?php
echo '<pre>';
$ldap_host = "ldap://192.168.10.111";//LDAP 服务器地址
$ldap_port = "389";//LDAP 服务器端口号
$ldap_user = "cn=wangping,ou=Practice,dc=baidush,dc=com";//设定服务器用户名 Practice实习 不加提示非法凭证credentials
$ldap_pwd = "wangping123";//设定服务器密码

$ldap_user = "cn=Manager,dc=baidush,dc=com";//管理员
$ldap_pwd = "e6666_baidu";//设定服务器密码

$ldap_conn = ldap_connect($ldap_host, $ldap_port) or die("Can't connect to LDAP server");//建立与 LDAP 服务器的连接
$rs=ldap_bind($ldap_conn, $ldap_user, $ldap_pwd) or die("Can't bind to LDAP server.");//与服务器绑定 用户登录验证 成功返回1

$base_dn = "dc=baidush,dc=com";//定义要进行查询的目录主键
//邮箱验证
$filter_col = "mail";//定义用于查询的列
$filter_val = "wangping@baidu.com";//定义用于匹配的值
//用户名认证
$filter_col = "cn";//定义用于查询的列
$filter_val = "Manager";//定义用于匹配的值
$result= ldap_search($ldap_conn, $base_dn, "($filter_col=$filter_val)");//执行查询
$entry= ldap_get_entries($ldap_conn, $result);//获得查询结果
//print_r($entry);exit;//输出查询结果

//修改 ok 必须管理权限 dn即cn=wudahong,ou=Practice,dc=baidush,dc=com需写对
$entry = array("telephonenumber" => "18290907878", "userpassword" => "wangping123");//设定要修改的记录属性
//$rs=ldap_modify($ldap_conn, "cn=wudahong,ou=Practice,dc=baidush,dc=com", $entry) or die("Can't modify entry.");

//新增 ok
$info=array();
$info["cn"] = "wu";
$info["sn"] = "test2";
$info["givenName"] = "wu";
$info["telephonenumber"] = "18290907878";
$info["userpassword"] = "wutest2";//可不加密码
$info["mail"] = "wutest2@baidu.com";
$info["objectclass"] = "inetOrgPerson";//此处不是inetOrgPerson1
//$info["objectclass"][0] = "inetOrgPerson";//可这样写 只需1个即可
//$info["objectclass"][1] = "posixAccount2";//加上这个ldap_add(): Add: Invalid syntax
$rs = ldap_add($ldap_conn, "cn=wutest2,ou=Practice,dc=baidush,dc=com", $info);

//删除 ok 如果不存在 ldap_delete(): Delete: No such object
$rs = ldap_delete($ldap_conn, "cn=John Jones,ou=Practice,dc=baidush,dc=com");
print_r($rs);exit;//输出查询结果

ldap_unbind($ldap_conn) or die("Can't unbind from LDAP server."); //与服务器断开连接
ldap_close($ldap_conn);//关闭连接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: