1 LDAP是什么
LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。
LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。要特别注意的是,LDAP通常作为一个hierarchal数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。
简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。
LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写,其实是一话号码簿,类似于我们所使用诸如NIS(Network Information Service)、DNS (Domain Name Service)等网络目录,MB6-502也类似于你在花园中所看到的树木。
LDAP是一种特殊的数据库。但是LDAP和一般的数据库不同,明白这一点是很重要的。 LDAP对查询进行了优化,与写性能相比LDAP的读性能要优秀很多。
1.1 LDAP的存储规则
区分名(DN,Distinguished Name)
和自然界中的树不同,文件系统/LDAP/电话号码簿目录的每一片枝叶都至少有一个独一无二的属性,这一属性可以帮助我们来区别这些枝叶。
在文件系统中, 这些独一无二的属性就是带有完整路径的文件名。比如/etc/passwd,该文件名在该路径下是独一无二的。当然我们可以有/usr/passwd, /opt/passwd,但是根据它们的完整路径,它们仍然是唯一的。
在LDAP中,一个条目的区分名称叫做“dn”或者叫做区分名。在一个目录中这个名称总是唯一的。比如,我的dn是"uid=aghaffar, ou=People, o=developer.ch"。不可能有相同的dn,但是我们可以有诸如"uid=aghaffar, MB6-502
ou=Administrators, o=developer.ch"的dn。这同上面文件系统中/etc/passwd 和 /usr/passwd的例子很类似。
我们有独一无二的属性,在"ou=Administrators, o=developer.ch" 中uid和在"ou=People, o=developer.ch"中的uid。这并不矛盾。
CN=Common Name 为用户名或服务器名,最长可以到80个字符,可以为中文;
OU=Organization Unit为组织单元,最多可以有四级,每级最长32个字符,可以为中文;
O=Organization 为组织名,可以3—64个字符长
C=Country为国家名,可选,为2个字符长MB7-222
LDAP目录以一系列“属性对”的形式来存储记录项,每一个记录项包括属性类型和属性值(这与关系型数据库用行和列来存取数据有根本的不同)。
mail = testmail@mccc.net
othermailbox = testmailother@mccc.com
givenname = givenname
sn = test sn
属性可添加,以下一个属性必须赋值:
objectclass=person (值为:person 或 server 或 organization 或 其他自定义的值)
2 Php如何操作LDAP
2.1 Php如何与LDAP连接和关闭
$ds=ldap_connect("ServerName")
ServerName是LDAP的服务器名,
例:
$ds=ldap_connect(“10.31.172.30:1000”)
返回值是:true 或 false
关闭连接
ldap_close($ds);
2.2 在php中如何搜索用户信息
wwww.chin aitpower.comWzTah
$ds=ldap_connect("10.31.172.30:1000");MB7-224
//首先连接上服务器
$justthese = array("cn","userpassword",”location”);
//搜索函数中的一个参数,要求返回哪些信息,
//以上传回cn,userpassword,location,这些都要求小写
$sr=ldap_search($ds,"o=jite", "cn=dom*",$justthese);
//第一个参数开启LDAP的代号
//第二个参数最基本的 dn 条件值 , 例:”o=jite,c=cn”
//第三个参数 filter 为布林条件,它的语法可以在 Netscape 站上找一份 dirsdkpg.pdf 档案.
// ’o’为组织名,’cn’ 为用户名,用户名可用通配符 ’*’
echo "domadmin姓氏有".ldap_count_entries($ds,$sr)." 个<p>";
//ldap_count_entries($ds,$sr)传回记录总数
$info = ldap_get_entries($ds, $sr);
//LDAP的全部传回资料
echo "资料传回 ".$info["count"]."笔:<p>";
for ($i=0; $i<$info["count"]; $i++) {
echo "dn为:". $info[$i]["dn"] ."<br>";
echo "cn为:". $info[$i]["cn"][0] ."<br>"; //显示用户名
echo "email为:". $info[$i]["mail"][0] ."<p>"; //显示mail
echo "email为:". $info[$i][“userpassword"][0] ."<p>"; //显示加密后的密码
}
2.3 添加用户
$ds=ldap_connect("10.31.172.30:1000");
//首先连接上服务器
$r=ldap_bind($ds,"cn=domadmin,o=jite","password");
//系住一个管理员,有写的权限
// cn=domadmin,o=jite顺序不能变
$info["cn"]="aaa"; //必填
$info["userpassword"]="aaa";
$info["location"]="shanghai";
$info["objectclass"] = "person"; //必填person为个人,还有server…
ldap_add($ds, "cn=".$info["cn"].",o=jite", $info);
ldap_unbind($ds);MB7-231
//取消绑定
ldap_close($ds);
//关闭连接
2.4 删除用户
$ds=ldap_connect("10.31.172.30:1000");
//首先连接上服务器
ldap_bind($ds,"cn=domadmin,o=jite","password");
//绑定管理员,有删除的权限
$dn="cn=dingxf,o=jite";
ldap_delete($ds, $dn);
//删除用户
ldap_unbind($ds);
//取消绑定
ldap_close($ds);
//关闭连接
2.5 修改用户资料
$ds=ldap_connect("10.31.172.30:1000");
//首先连接上服务器
ldap_bind($ds,"cn=domadmin,o=jite","password");
//绑定管理员,有修改的权限
$dn="cn=dingxf,o=jite";
//用户dn
$info["userpassword"]="aaa"; //要修改的信息,放在数组变量中
$info["location"]="shanghaisdaf";
ldap_modify($ds, $dn , $info);
//修改函数
ldap_unbind($ds);
//取消绑定
ldap_close($ds);
//关闭连接
2.6 用户登录验证
$ds=ldap_connect("10.31.172.30:1000");
//首先连接上服务器
if (ldap_bind($ds,"cn=dingxf,o=jite","dingxf")){
echo "验证通过";
}else{
echo "验证不通过";
}
ldap_unbind($ds);
//取消绑定
ldap_close($ds);
//关闭连接
分享到:
相关推荐
使得PHP能够支持LDAP扩展,从而能够执行如查询、添加、修改或删除LDAP目录中的条目等操作。 这个"php_ldap.dll集合"包含多个版本的`php_ldap.dll`,这通常是因为不同版本的PHP可能需要匹配特定版本的`dll`来确保...
通过 PHP LDAP 扩展,开发者可以方便地在 PHP 应用程序中实现对 LDAP 数据库的操作。 **LDAP 基本概念** 1. **目录服务**:LDAP 提供的一种服务,存储和管理用户、组、系统和服务等对象的信息。 2. **DN...
使用PHP LDAP扩展时,开发者可以利用PHP的内置类和函数,如 `ldap_connect()`、`ldap_bind()`、`ldap_search()` 和 `ldap_first_entry()` 等,编写脚本来实现各种 LDAP 相关任务。这为Web应用提供了强大的目录服务...
标题中的"ldap-example.zip_ldap_php directory_php ldap_zip"表明这是一个与LDAP(轻量级目录访问协议)相关的示例,使用PHP语言实现,并且涉及到目录服务。PHP LDAP库通常用于连接到LDAP服务器,进行用户身份验证...
2. LDAP电话簿应用:这应该是一个用PHP编写的Web应用程序,用于展示和管理 LDAP 目录中的联系人信息,可能包含数据库配置、HTML模板、CSS样式表、JavaScript脚本以及相关的PHP源代码文件。 3. 测试文件:为了确保...
PHP提供了内置的LDAP扩展,允许开发者通过PHP代码直接操作LDAP服务器。这个"ldap.php"文件可能包含了连接、搜索、绑定、添加、删除、修改和比较等操作的函数。 2. **连接LDAP服务器** 使用`ldap_connect()`函数,...
在与LDAP结合使用时,PHP提供了一系列的LDAP扩展,允许开发者通过编程接口与LDAP服务器交互,执行搜索、添加、删除、修改等操作。这些功能在构建企业级的用户管理和身份验证系统中非常有用。 LDAP是一种开放标准的...
当我们谈论"Laravel开发-ldap"时,这意味着我们要探讨如何在Laravel项目中集成和使用LDAP(轻量级目录访问协议)进行身份验证和其他相关操作。 LDAP是一种用于存储和检索用户信息的标准协议,常用于大型组织或企业...
在本文中,我们将深入探讨如何在Laravel框架中使用ldap-auth进行LDAP(轻量级目录访问协议)身份验证。Laravel 4.x版本提供了一个强大的工具集,使得开发者能够轻松集成像LDAP这样的企业级身份验证系统,特别是对于...
总的来说,"deb_php.3.3_ldap_源码"是一个关于使用PHP 3.3与LDAP集成的实例,通过学习这个源代码,开发者可以掌握如何在PHP中实现对LDAP目录服务的高效、安全访问,这对于构建企业级的身份管理和信息检索系统至关...
”暗示这个项目可能是用PHP开发的一个基于LDAP的电话簿应用。LDAP通常用于存储用户账户、联系人信息等结构化数据,而电话簿应用则可能利用这些功能来查找和管理联系人的电话号码和其他信息。 在标签“ldap”中,...
在LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)的使用过程中,有时会遇到一个常见的错误提示:“object class violation”。这一错误提示通常出现在尝试对LDAP目录进行修改操作时,如添加、...
`phpldapadmin-1.1.0.7.tar.gz`是这个工具的源码包,通过解压并安装,管理员可以通过浏览器对LDAP目录进行操作,如添加、删除和修改条目,查看日志等,极大地简化了管理流程。 安装`phpldapadmin`的步骤通常包括...
毫不费力地连接到LDAP服务器,并在几分钟之内开始运行查询和操作。 流利的查询生成器。 建立LDAP查询从未如此简单。 使用流畅的界面,只需几行或更少的行数即可找到您要查找的记录。 增压的活动记录。 轻松创建和...
接下来将详细介绍如何利用PHP脚本来访问和操作LDAP服务器。 - **连接LDAP服务器**:通过`ldap_connect()`函数建立与LDAP服务器的连接。 - **绑定LDAP会话**:使用`ldap_bind()`函数进行身份验证。 - **执行查询**:...
例如,创建一个包含用户信息的ldif文件,然后使用`ldapadd`命令将其导入到LDAP服务器中。 #### 十二、重启LDAP服务 每次更改LDAP服务器配置或数据后,都需要重启服务以确保更改生效。 **12.1 重启服务** ``` [root...
LDAP程序访问技术主要涉及使用各种编程语言和API来访问和操作LDAP目录服务。 ##### 第一节 Sun公司的JNDI与各厂商实现的LDAP函数库关系 JNDI (Java Naming and Directory Interface) 是Sun Microsystems开发的一种...
同样也不提供象关系数据库中普遍包含的大量的函数,它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制,它的数据修改使用简单的锁定机制实现All-or-Nothing,它的目标...
在完成配置后,可以通过修改 `config/auth.php` 文件,将默认的数据库验证驱动替换为 `AdldapAuthenticationProvider`,这样 Laravel 就会使用 LDAP 进行用户认证。同时,可以配置 LDAP 用户模型,以便与 Laravel 的...
标题 "Laravel开发-my-eloquent-ldap" 提示我们这是一个关于Laravel框架的开发项目,具体来说是与Eloquent ORM(对象关系映射)结合使用来处理LDAP(轻量级目录访问协议)的扩展。Eloquent是Laravel中的默认ORM,...