LDAP是一个用于公布文件目录信息内容到很多不一样資源的协议。一般它都做为一个集中化的详细地址本应用,但是依据策划者的*须,它能够做得更为强劲。
LDAP最基本上的方式是一个数据库连接的规范方法。该数据库查询为读查看作了提升。因而它能够迅速地获得查看結果,但是在其他层面,比如升级,就慢得多。要需注意的是,LDAP一般 做为一个hierarchal数据库查询应用,而不是一个关系型数据库。因而,它的构造用树来表明相比报表好。正由于那样,就不能用SQL句子了。
简易来说,LDAP是一个获得有关人或是資源的集中化、数据格式的迅速方法。
LDAP是轻巧文件目录浏览协议书(Lightweight Directory Access Protocol)的简称,实际上是一话号簿,类似大家所应用例如NIS(Network Information Service)、DNS (Domain Name Service)等互联网文件目录,也类似你一直在花苑中所见到的花草树木。
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, 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的编号
//第二个主要参数最基本上的 dn 标准值 , 例:”o=jite,c=cn”
//第三个主要参数 filter 为布林标准,它的英语的语法能够在 Netscape 站在找一份 dirsdkpg.pdf 档案资料.
// ’o’为组织名,’cn’ 为登录名,登录名可以用使用通配符 ’*’
echo "domadmin姓式有".ldap_count_entries($ds,$sr)." 个
";
//ldap_count_entries($ds,$sr)传到纪录数量
$info = ldap_get_entries($ds, $sr);
//LDAP的所有传到材料
echo "材料传到 ".$info["count"]."笔:
";
for ($i=0; $i<$info["count"]; $i ) {
echo "dn为:". $info[$i]["dn"] ."
";
echo "cn为:". $info[$i]["cn"][0] ."
"; //表明登录名
echo "email为:". $info[$i]["mail"][0] ."
"; //表明mail
echo "email为:". $info[$i][“userpassword"][0] ."
"; //表明数据加密后的登陆密码
}
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);
//撤销关联
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);
//关掉联接