• ldap资料


    ldap协议资料收集

    作者:beanlai | 2012/4/15 22:54:33 | 阅读22

    区分名(DN,Distinguished Name) 

    在LDAP中,一个条目的区分名称叫做“dn”或者叫做区分名。在一个目录中这个名称总是唯一的。比如,我的dn是"u ou=People, o=developer.ch"。不可能有相同的dn,但是我们可以有诸如"u 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
    属性可添加,以下一个属性必须赋值:
    object (值为:person 或 server 或 organization 或 其他自定义的值)

     

    LDAP简称对应

      o– organization(组织-公司)ou – organization unit(组织单元-部门)c - countryName(国家)dc - domainComponent(域名)sn – suer name(真实名称)cn - common name(常用名称)

    *常用关键字及其对应的含义
    【dc】-- Domain Component-- 域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com

    【uid】-- User ID-- 用户ID,如“tom”

    【ou】-- Organization Unit-- 组织单位,类似于Linux文件系统中的子目录,是一个容器对象,组织单位可以包含其他各种对象(包括其他组织单元),如“market”

    【sn】-- Surname-- 姓,如“Johansson”

    【dn】-- Distinguished Name-- 唯一辨别名,类似于Linux文件系统中的绝对路径,每个对象都有一个唯一的名称,如“u style="line-height: 23px; margin-bottom: 10px; color: #333333; font-size: 13px; text-align: left; padding: 0px;">【rdn】-- Relative dn-- 相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“u Johansson”

    【c】-- Country -- 国家,如“CN”或“US”等

    【o】-- Organization -- 组织名,如“Example,Inc.”

     

     

    假设有一个名为Example的公司(DNS名为example.com),其组织结构如下:
    LDAP基础 - 塞外戎马 - Study Desk


         (1)首先要为目录树建立一个“根(Root)”。根是目录树的最顶层,后面建立的所有对象都是基于这个根的,所以它也称为基准DN。它可以有3种格式表示。
         *使用X.500标准格式:o=example,c=CN。 
         *直接使用公司的DNS域名:o=example.com。
         *使用公司的DNS域名的不同部分:dc=example,dc=com。
         第3种格式更利于以后目录树的扩展,如将来Example公司合并了abc公司,之需要将dc=com最为根即可,不需要修改原有的结构。

         (2)公司中的部门作为OU,如“ou=market”。OU是目录树的分枝节点,下面可以包含其他分枝节点或叶子节点。

         (3)用户是目录树的最底层(即叶子节点),可以根据用户所在的部门将其放置在不同的OU中,使用uid或cn描述都可以,如“u Johansson”。

     

     

     

    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)." 个<p>";
    //ldap_count_entries($ds,$sr)传回记录总数

    $info = ldap_get_entries($ds, $sr);
    //LDAP的全部传回资料
    echo "资料传回 ".$info["count"]."笔:<p>";
    for ($i=0; $i<$info["count"]; $i++) {
    echo "dn为:". $info[$i]["dn"] ."<br>";
    echo "cn为:". $info[$i]["cn"][0] ."<br>"; //显示用户名
    echo "email为:". $info[$i]["mail"][0] ."<p>"; //显示mail
    echo "email为:". $info[$i][“userpassword"][0] ."<p>"; //显示加密后的密码
    }
    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);
    //关闭连接
  • 相关阅读:
    有关Lucene的问题(7):用Lucene构建实时的索引
    Lucene学习总结之九:Lucene的查询对象(1)
    有关Lucene的问题(6):Lucene的事务性
    Lucene学习总结之九:Lucene的查询对象
    面向连接的Socket Server的简单实现
    Lucene 原理与代码分析完整版
    有关Lucene的问题(8):用Lucene构建实时索引的文档更新问题
    k8spod的状态为evicted的情况分析
    centos7环境 的 k8s安装helm 3.7.1
    VMware虚拟机中CentOS7的硬盘空间扩容
  • 原文地址:https://www.cnblogs.com/jjkv3/p/2605181.html
Copyright © 2020-2023  润新知