|
LDAP服务架设
目前我只是使用OpenDS 2.2.0简单运行起来而已,这样就成了一个LDAP服务了。
打开OpenDS控制台,在OpenDS_HOME/bat/control-panel.bat
<ul>列表和计算条目数目<?phpheader("content-type:text/html;charset=utf-8");if(!extension_loaded("ldap")){ if(substr(PHP_OS, 0,3)=="WIN"){ dl("php_ldap.dll"); }else{ dl("php_ldap.so"); }}else{ echo "ldap 已经安装。<br/>";}$ldap = ldap_connect("localhost",389) or die("Could not connect to LDAP Server: ");if($ldap){ echo "连接到ldap服务器。<br/>"; $ldap_bind = ldap_bind($ldap, "cn=admin", "gbit"); if($ldap_bind){ echo "ldap binded successfully.<br/>"; $sr = ldap_list($ldap, "dc=example,dc=com", "sn=*"); echo "有".ldap_count_entries($ldap, $sr)."记录<br />"; //print_r($sr); $info = ldap_get_entries($ldap, $sr); //print_r($info["count"]); for($i=0;$i<$info["count"];$i++){ print_r( $info[$i]["cn"][0]); } }else{ echo "ldap binded failed.<br/>"; } ldap_unbind($ldap);}$i=1;$password="password";echo $password{$i};//ldap_close($ldap);?>
添加一个简单的条目<?php$ds = ldap_connect("localhost",389) or die("Could not connect to LDAP Server: ");if($ds){ $r = ldap_bind($ds,"cn=admin","gbit"); // 在添加一个条目时,cn、sn、objectClass是必填属性,每个属性都是一个对象数组。 // 添加姓名全称 $info["cn"][0]="John jeniess"; // 添加姓氏 $info["sn"][0]="jeniess"; // 添加对象类,此对象类用描述该条目的性质。 $info["objectClass"][0]="top"; $info["objectClass"][1]="inetOrgPerson"; $info["objectClass"][2]="organizationalPerson"; $info["objectClass"][3]="person"; // 个人条目 if(ldap_add($ds, "cn=John jeniess,dc=example,dc=com", $info)){ echo "添加成功~"; } ldap_close($ds);}?>
修改条目<?php$ds = ldap_connect("localhost",389) or die("Could not connect to LDAP Server: ");if($ds){ $r = ldap_bind($ds,"cn=admin","gbit"); $info["cn"][0]="John jeniess1"; // 添加姓氏 $info["sn"][0]="jeniess1"; // 添加对象类,此对象类用描述该条目的性质。 $info["objectClass"][0]="top"; $info["objectClass"][1]="inetOrgPerson"; $info["objectClass"][2]="organizationalPerson"; $info["objectClass"][3]="person"; // 个人条目 // 编辑时不能在根目录中操作(RDN= Root DN),即必需要先有A分组,然后才能对A分组的条目进行修改。ou相当于dc为j的People分组。 if(ldap_modify($ds, "uid=user.4,ou=People,dc=j", $info)){ echo "编辑成功~"; } ldap_close($ds);}?>
删除条目<?php$ds = ldap_connect("localhost",389) or die("Could not connect to LDAP Server: ");if($ds){ $r = ldap_bind($ds,"cn=admin","gbit"); $dn = "uid=user.5,ou=People,dc=j"; // 删除方法比较简单,直接输入条目的dn路径的就可以了。 if(ldap_delete($ds, $dn)){ echo "删除成功~"; } ldap_close($ds);}?>
增加条目属性<?php$ds = ldap_connect("localhost",389) or die("Could not connect to LDAP Server: ");if($ds){ $r = ldap_bind($ds,"cn=admin","gbit"); // 添加属性时,只需要把想要添加的属性增加到数组中即可。 $info["st"][0]="jeniess address"; if(ldap_mod_add($ds, "cn=John jeniess,dc=example,dc=com", $info)){ echo "条目属性添加成功~"; } ldap_close($ds);}?>
修改条目属性<?php$ds = ldap_connect("localhost",389) or die("Could not connect to LDAP Server: ");if($ds){ $r = ldap_bind($ds,"cn=admin","gbit"); // 修改属性时,只需要把想要添加的属性增加到数组中即可。 $info["st"][0]="jeniess address 111"; // 此方法与增加属性的方法相当 if(ldap_mod_replace($ds, "cn=John jeniess,dc=example,dc=com", $info)){ echo "条目属性编辑成功~"; } ldap_close($ds);}?>
删除条目属性<?php$ds = ldap_connect("localhost",389) or die("Could not connect to LDAP Server: ");if($ds){ $r = ldap_bind($ds,"cn=admin","gbit"); // 删除条目属性时,需要把它的value值也加进来才行,不然会认为没有此属性。 $info["st"][0]="jeniess address 111"; if(ldap_mod_del ($ds, "cn=John jeniess,dc=example,dc=com", $info)){ echo "条目属性删除成功~"; } ldap_close($ds);}?> LDAP的数据结构
<div class="table-wrap">标准键值描述ogbit组织 organization的单词首字母oudb center 组织单位 organization unit的两个单词首字母lamoy fujian china城市/所在地(location)uidlinzq用户名。应该是用到验证的用户名,与我们在数据库中用于登陆的用户名一样。czh-cn国家(country)cn林忠青用户全名sn林用户名中的姓stavailable状态,用户的使用状态(status)givenName忠青用户名中的名字employeeNumberA445员工编号employeeType员工类型description描述maillinzq@gbit.com邮箱地址telephoneNumber13799265585电话facsimileTelephoneNumber传真号码mobile移动电话号码pager寻呼机号码photo相片(应该是存放相片的字节流)postalAddress邮政地址postalCode邮政编码homePhone住宅电话号码roomNumber门牌号preferredLanguagezh-cn母语street街道地址entryDNcn=林忠青,dc=example,dc=com唯一标识entryUUIDb2d07f19-0214-425b-a652-409a84ed9ac4全局ID值userPassword e1NTSEF9aXUwSlNPWEEzejRBQlhOemd
0Q3NDaXdENUh1cmo4Y2labTBzeWc9PQ==用户密码 |
|