LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。要特别注意的是,LDAP通常作为一个hierarchal数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。
简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。
LDAP是轻量目录访问协议(LightweightDirectory Access Protocol)的缩写,其实是一话号码簿,类似于我们所使用诸如NIS(NetworkInformation Service)、DNS (Domain Name Service)等网络目录,也类似于你在花园中所看到的树木。
LDAP是一种特殊的数据库。但是LDAP和一般的数据库不同,明白这一点是很重要的。 LDAP对查询进行了优化,与写性能相比LDAP的读性能要优秀很多。
1.1 LDAP的存储规则
区分名(DN,DistinguishedName)
和自然界中的树不同,文件系统/LDAP/电话号码簿目录的每一片枝叶都至少有一个独一无二的属性,这一属性可以帮助我们来区别这些枝叶。
在文件系统中, 这些独一无二的属性就是带有完整路径的文件名。比如/etc/passwd,该文件名在该路径下是独一无二的。当然我们可以有/usr/passwd, /opt/passwd,但是根据它们的完整路径,它们仍然是唯一的。
在LDAP中,一个条目的区分名称叫做“dn”或者叫做区分名。在一个目录中这个名称总是唯一的。比如,我的dn是"uid=aghaffar, ou=People, o=developer.ch"。不可能有相同的dn,但是我们可以有诸如"uid=aghaffar,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个字符长
LDAP目录以一系列“属性对”的形式来存储记录项,每一个记录项包括属性类型和属性值(这与关系型数据库用行和列来存取数据有根本的不同)。
mail = testmail@mccc.net
othermailbox = testmailother@mccc.com
givenname = givenname
sn = test sn
属性可添加,以下一个属性必须赋值:
objectclass=person (值为:person 或 server 或organization 或 其他自定义的值)
2 PHP(PHP培训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中如何搜索用户信息
$ds=ldap_connect("10.31.172.30:1000")
//首先连接上服务器
$justthese =array("cn","userpassword",”location”)
//搜索函数中的一个参数,要求返回哪些信息,
//以上传回cn,userpassword,location,这些都要求小写
$sr=ldap_search($ds,"o=jite","cn=dom*",$justthese)
//第一个参数开启LDAP的代号
添加数据没有成功。成功会有提示的,
首先应该提示你输入密码
多加个参数 -h 192.168.38.134
看看什么情况。
还有最好出一下openldap服务端的syslog看一下更有助于你解决问题。
这个要全部配好比较复杂,尤其是schema映射那一部分。如果没有特别需求还是建议用BDB。
如果单纯的讲slapd.conf的配置还是比较简单的。
例子如下
#######################################################################
# sql database definitions
#######################################################################
databasesql
suffix"o=sql,c=RU"
rootdn"cn=root,o=sql,c=RU"
rootpwsecret
dbnameldap_mysql
dbuserroot
dbpasswd
subtree_cond"ldap_entries.dn LIKE CONCAT('%',?)"
insentry_stmt"INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)"
has_ldapinfo_dn_runo
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)