LDAP使用

LDAP服务架设

目前我只是使用OpenDS 2.2.0简单运行起来而已,这样就成了一个LDAP服务了。
打开OpenDS控制台,在OpenDS_HOME/bat/control-panel.bat

  • 列表和计算条目数目
    <?php
    header("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的数据结构

    标准键描述
    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==
    用户密码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值