别说爱就一个字,你数数你说过几次; 别说程序员好干,你看看你年薪几万!~ 别说你爱的太真,伤的却太深——只要真心的投入就无悔、无怨恨 别说失去的太多,那是不懂得收获;别说爱了又错过,那是你没有去收获住那么硕果!~ 请真心你现在所拥有的一切——守侯住属于你的爱情!FOR ever

什么是LDAP

上一篇 / 下一篇  2008-07-11 23:12:44 / 个人分类:报子箱!~

查看( 153 ) / 评论( 3 )
LDAP是什么IXPUB技术博客.L kIhwebj!S
LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。
s.Bbu*BRc0  LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。要特别注意的是,LDAP通常作为一个hierarchal数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。
-J.E&\#{h[,r;V0
$`5Z p7E,\*C}0  简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。IXPUB技术博客K9Qyb"Je-AIx0a

)Mq`{FU!S0LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写,其实是一话号码簿,类似于我们所使用诸如NIS(Network Information Service)、DNS (Domain Name Service)等网络目录,也类似于你在花园中所看到的树木。IXPUB技术博客5Q%LiE i?hLV0}
LDAP是一种特殊的数据库。但是LDAP和一般的数据库不同,明白这一点是很重要的。 LDAP对查询进行了优化,与写性能相比LDAP的读性能要优秀很多。
J)^S)V$\5g ?T;IiE01.1 LDAP的存储规则
vLu,w"dT7h0区分名(DN,Distinguished Name)IXPUB技术博客&D!m _C:L9p;~*S!i!ir
和自然界中的树不同,文件系统/LDAP/电话号码簿目录的每一片枝叶都至少有一个独一无二的属性,这一属性可以帮助我们来区别这些枝叶。
.L)]S1R0Qo0在文件系统中, 这些独一无二的属性就是带有完整路径的文件名。比如/etc/passwd,该文件名在该路径下是独一无二的。当然我们可以有/usr/passwd, /opt/passwd,但是根据它们的完整路径,它们仍然是唯一的。
YD:h2^+d#G*F#o0在LDAP中,一个条目的区分名称叫做“dn”或者叫做区分名。在一个目录中这个名称总是唯一的。比如,我的dn是"uid=aghaffar, u=People, o=developer.ch"。不可能有相同的dn,但是我们可以有诸如"uid=aghaffar, u=Administrators, o=developer.ch"的dn。这同上面文件系统中/etc/passwd 和 /usr/passwd的例子很类似。
laY5L_'V w0我们有独一无二的属性,在"ou=Administrators, o=developer.ch" 中uid和在"ou=People, o=developer.ch"中的uid。这并不矛盾。
7K2XFAwK"y0CN=Common Name 为用户名或服务器名,最长可以到80个字符,可以为中文;
bziPX$q;i8K0OU=Organization Unit为组织单元,最多可以有四级,每级最长32个字符,可以为中文;IXPUB技术博客HX+]HA3~&UUc
O=Organization 为组织名,可以3—64个字符长
VVr)Ko;{,p-t0C=Country为国家名,可选,为2个字符长
3ZZ3Vn&n;K i9c3kFr,U0IXPUB技术博客5H$`-x~0uD
LDAP目录以一系列“属性对”的形式来存储记录项,每一个记录项包括属性类型和属性值(这与关系型数据库用行和列来存取数据有根本的不同)。IXPUB技术博客 t-^:[` h9];z
mail =testmail@mccc.net
#Ewj#Kfne u~z0othermailbox =testmailother@mccc.com
w+{#aU l)q+V/M7jH0givenname = givenname
C+P7P A xO:~4k0sn = test snIXPUB技术博客x|p D4U3D3sK)^
属性可添加,以下一个属性必须赋值:
.]sOkVm7YN)_0objectclass=person (值为:person 或 server 或 organization 或 其他自定义的值)IXPUB技术博客TnpxW!y9@+o
IXPUB技术博客!Ko DBU-a)z?W:{kI+Z
2 Php如何操作LDAP
*KUM }pXQ1I02.1 Php如何与LDAP连接和关闭IXPUB技术博客&PX L#[ k4f3{,]%f.A;\
$ds=ldap_connect("ServerName")IXPUB技术博客HJ`{'DB1ds%o F@
ServerName是LDAP的服务器名,IXPUB技术博客0|%s7hNu E

K]m.w$}#Hl0例:IXPUB技术博客h%O e%sH's
$ds=ldap_connect(“10.31.172.30:1000”)
1uD#b%?XY!S0返回值是:true 或 falseIXPUB技术博客-x3k%vWW%T9|k3b

jo&U%MZk0关闭连接
9G&r:L%{&_0ldap_close($ds);IXPUB技术博客2QF$y6kx]!Q
IXPUB技术博客h;T$ib{5X [
2.2 在php中如何搜索用户信息
J D`nVc(s0
[8HyI]PIB$KxP0$ds=ldap_connect("10.31.172.30:1000");
*\X9UQY Z9[0//首先连接上服务器IXPUB技术博客 l(H'}a2dF*A hl
$justthese = array("cn","userpassword",”location”);
:C\U&M3~1tR7Qg'`E0//搜索函数中的一个参数,要求返回哪些信息,IXPUB技术博客p&JP^D
//以上传回cn,userpassword,location,这些都要求小写IXPUB技术博客3\ t ?:wGuY
$sr=ldap_search($ds,"o=jite", "cn=dom*",$justthese);IXPUB技术博客P:a[ C iC
//第一个参数开启LDAP的代号
6qY [|WD;c,Q0//第二个参数最基本的 dn 条件值 , 例:”o=jite,c=cn”
})VCMf|[0//第三个参数 filter 为布林条件,它的语法可以在 Netscape 站上找一份 dirsdkpg.pdf 档案.IXPUB技术博客&U+z @$FF4O}T
// ’o’为组织名,’cn’ 为用户名,用户名可用通配符 ’*’
;\wv2~FA4m0echo "domadmin姓氏有".ldap_count_entries($ds,$sr)." 个<p>";
Hpl!G a8T3BK;xt]yF0//ldap_count_entries($ds,$sr)传回记录总数
z,N&}T5z*EGh0
;oYX6eQC"j!\0$info = ldap_get_entries($ds, $sr);
D{?0\\ob0//LDAP的全部传回资料
*wL5HT,o)d0echo "资料传回 ".$info["count"]."笔:<p>";IXPUB技术博客MD-D0|f.|"N7Z
for ($i=0; $i<$info["count"]; $i++) {
7O7|)\$~(J)e6N0echo "dn为:". $info[$i]["dn"] ."<br>";IXPUB技术博客"z u^8p+~
echo "cn为:". $info[$i]["cn"][0] ."<br>"; //显示用户名IXPUB技术博客{ `K(]&k#\)a.l5\R5T5H
echo "email为:". $info[$i]["mail"][0] ."<p>"; //显示mail
I-@m P8N R]4rV9_(N I0echo "email为:". $info[$i][“userpassword"][0] ."<p>"; //显示加密后的密码IXPUB技术博客1\k0xUQe
}IXPUB技术博客I`n+t5|QTC
2.3 添加用户IXPUB技术博客o%{#p4Cu
$ds=ldap_connect("10.31.172.30:1000");IXPUB技术博客yYH3}v
//首先连接上服务器
BX%i)wudE0$r=ldap_bind($ds,"cn=domadmin,o=jite","password");IXPUB技术博客?Fk4_&C$O&`
//系住一个管理员,有写的权限
3i)\ \(c|Dg0// cn=domadmin,o=jite顺序不能变
MSX'\#F0$info["cn"]="aaa"; //必填IXPUB技术博客 a7n!f!UkuJl G@
$info["userpassword"]="aaa";
u_'R:~ Zz4e/qY;{0$info["location"]="shanghai";IXPUB技术博客#DyyO@0~5^#M|k
$info["objectclass"] = "person"; //必填person为个人,还有server…
*u}Zix{0ldap_add($ds, "cn=".$info["cn"].",o=jite", $info);IXPUB技术博客nN!M T-t-^
ldap_unbind($ds);IXPUB技术博客__&A:y]/n(b
//取消绑定IXPUB技术博客1Nz weTNx'\k-i
ldap_close($ds);IXPUB技术博客1v0n0Y'\R9@"L/e y3A
//关闭连接IXPUB技术博客!Z3f,X E;gUnY L
2.4 删除用户
R0d5]`QXf0$ds=ldap_connect("10.31.172.30:1000");IXPUB技术博客X,` Q&w G h4?
//首先连接上服务器IXPUB技术博客9kI)h [|u5_;|P/LN8s
ldap_bind($ds,"cn=domadmin,o=jite","password");IXPUB技术博客#v:C1IN FZf
//绑定管理员,有删除的权限
`9A6b*s_R-Xwp0$dn="cn=dingxf,o=jite";
M,T&W5D[\qGX0ldap_delete($ds, $dn);IXPUB技术博客\|D1F |oY
//删除用户IXPUB技术博客7ry+hz-l S+Qw.B
ldap_unbind($ds);
'd Q+Z$P%~H IU e0//取消绑定IXPUB技术博客"`,|4Zs'z1E
ldap_close($ds);
WhXmSvMY&n0//关闭连接IXPUB技术博客#\.v~5~ I7Yy9f
2.5 修改用户资料
?;|8gn t5Y ]K0$ds=ldap_connect("10.31.172.30:1000");IXPUB技术博客U6r,}:pR
//首先连接上服务器
~6iR g'C lFdZ;d2O7M0ldap_bind($ds,"cn=domadmin,o=jite","password");IXPUB技术博客:Ume8Hu"i:[
//绑定管理员,有修改的权限IXPUB技术博客nD;r6O3X/G P;}b
$dn="cn=dingxf,o=jite";IXPUB技术博客P.jN[([BuL
//用户dn
8h_5IW5p8R8z1J3oV,d;D0$info["userpassword"]="aaa"; //要修改的信息,放在数组变量中
?-~#U_^(L5x4F0$info["location"]="shanghaisdaf";
eI#WA_-F8F0
r$K,IF6lN(`R0ldap_modify($ds, $dn , $info);IXPUB技术博客{+gw8q'U_9f5}S\
//修改函数
WGwP J5u.s2k0ldap_unbind($ds);
3H)]6i4X:{#c9U0//取消绑定
E4f8c#RO4|4Q*j@!M0ldap_close($ds);IXPUB技术博客6NC*[?F
//关闭连接
XW!qj#s4F Uh K02.6 用户登录验证
k;O-D)i6e6n5]$P_0$ds=ldap_connect("10.31.172.30:1000");IXPUB技术博客5YWi%jjHT-L
//首先连接上服务器IXPUB技术博客Ki(|.nXxQ"Ls
if (ldap_bind($ds,"cn=dingxf,o=jite","dingxf")){
eu`%Etr~0echo "验证通过";IXPUB技术博客w6~n,?9_(j^?3DrW
}else{
6{/Bx4j?e }0echo "验证不通过";IXPUB技术博客3J{&]9c BHm#p/k'`
}IXPUB技术博客{viv m&R'fX4QMfQ
ldap_unbind($ds);IXPUB技术博客RR6M!t e5kP+QWf
//取消绑定IXPUB技术博客h7k VZ!I5Hb J9gl j
ldap_close($ds);IXPUB技术博客8Q'W q1k7N{\
//关闭连接
7p!S/v,ezo0
C!~Qo8Rmv7^5v"Xx0IXPUB技术博客f8\ ^ D#Ze

pZ8~W?;H Xa0
pF~qL$o{-s#T0注:此方法比较简单,实用,它也有不足之处,如果不通过,ldap_bind()提示它自带的提示语:”Warning: LDAP: Unable to bind to server: Inappropriate authentication in /home/htdocs/jldl.net/ldap/test.php3 on line 16”

TAG:

joboss发布于2008-07-17 15:43:18
谢谢!
dong_ye的个人空间 dong_ye 发布于2008-08-22 20:26:19
是大方时尚
very good!!!!!!!!!
hpjsj1200的个人空间 hpjsj1200 发布于2008-12-24 19:49:39
谢谢
j        aP,t7UP/F8C {        qblog.ixpub.net呵呵IXPUB技术博客Ls)@-|j$GkU
blog.ixpub.net5F~#lt5~
顶一下了
我来说两句

(可选)

Open Toolbar