LDAP基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LDAP基础知识相关的知识,希望对你有一定的参考价值。

一 信息模型

  目录的基本信息单元是条目,条目是关于描述对象的信息集合。

技术分享    

 条目由属性集合组成,每个属性说明对象的一个特征。每个属性有一个类型和一个或多个
值。属性类型说明包含在此属性中的信息的类型,而值包含实际的数据。(电话、邮箱、姓名、部门)

  1. LDIF (LDAP Interchange Format)是指存储LDAP配置信息及目录内容的标准文本文件格式.LDIF文件常用来向目录导入或更改记录信息,这些信息需要按照LDAP中schema的格式进行组织,并会接受schema 的检查,如果不符合其要求的格式将会出现报错信息

    dn: uid=bjensen, dc=airius, dc=com
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    cn: Barbara Jensen
    cn: Babs Jensen
    sn: Jensen
    mail: [email protected]

    一个LDIF条目由多行组成。第一行以dn:开始,后跟条目的分辨名。随后是条目的属性,每
    个属性一行。每个属性值前面是属性类型和冒号(:)

  2. 模式 schema

    所有条目都有一个必须属性集合和一个可选属性集合。所有关于必须属性和可选属性的信息集合统称为模式(Schema),目录模式对存储在目录中的信息的类型和值保持控制和维护。

    总之,LDAP 信息模型描述条目,条目是目录的基本信息单元。条目由属性组成,属性由一个属性类型和一个或多个属性值组成。属性的约束用来限制作为属性值的数据的类型和长度。目录模式规定了一个属性是必须属性还是可选属性。

二 命名模型

  1. 命名模型

    LDAP 命名模型定义用户如何组织和引用数据使用户可以用一种易于管理的方式把条目放入目录。(条目以倒树(根在上)的形式排列

    UNIX 文件系统和 LDAP 目录之间有三点不同:
    第一是 LDAP 模型没有真正的根条目。文件系统有一个根目录,另一方面,在 LDAP 目录中,根条目是概念性的——不作为一个可以存放数据的条目存在。
    第二是目录的每个节点都包含数据,即LDAP条目允许在他的下面有子节点。在文件系统中,只有目录可以有子节点,而且只有文件可以包含数据。

    第三是 树中的独立节点如何命名。LDAP名称与文件系统名称的方向是相反的。

  2. 模型作用

    命名模型是为目录中的每个条目给出一个唯一的名称。在 LDAP 中,使用分辨名(DN)来唯一标识条目。

  3. 功能模型

    LDAP 功能模型包含一个可以分成三组的操作集合。查询类操作允许用户搜索目录并取回目录数据。更新类操作允许用户对目录条目进行添加、删除和修改。认证和控制类操作允许客户端向目录证明自己的身份,并在几个方面对会话进行控制

    1. 查询操作

      int ldap_search(
      LDAP *ld,
      char *base,
      int scope,
      char *filter,
      char *attrs[],
      int attrsonly
      );

      第一个参数是 LDAP 连接的句柄。
      第二个参数是查询的基对象,这个参数用一个 DN 来表示,它表示你要查询的目录(子)树的根。
      第三个参数是范围。范围有三个类型。

      一是BASE,是指你要限定查询条件为基对象。这通常用来在目录中找一个特殊的条目。

      二是ONELEVEL,是指你想要查询的只是基对象直接下级的条
      目。

      三是SUBTREE,是指你想要查询从基对象以任何路径到树叶的整个子树。 下图描述了查询范围的三种类型


      技术分享

      技术分享

      技术分享

      第四个查询参数是查询过滤条件。

      第五个查询参数是查询结果返回的属性列表。你可以指定所有的属性都要被返回,也可要求返回部分属性值

    2. 更新类操作

      LDAP 更新类操作包括四种操作:添加、删除、修改和重命名(即修改 RDN),这四种操作定义了在目录中操作数据的方式。

    3. 认证和控制(会话)

三 schema

  1. 功能

    目录的模式(schema)是一组规则,用来确定目录能存储什么和服务器和客户端在进行目录操作时如何对待数据. schema 被 LDAP 各方(服务器、客户端、应用程序)用来作为数据交换的”标准”,schema 也被用作目录中存储的数据的长度、范围和格式的强制约束.
    最后,schema 也有利于目录中数据的规整和对访问者权限的控制

  2. 元素 

    构成 schema 的元素有属性类型(attribute types)、对象类(object classes)、语法
    (syntaxes)、匹配规则(matching rules)、目录信息树内容规则(DIT content rules)、目录信息树结构规则(DIT strctural rules)和命名形式(name forms).

    1. OID(对象标识符)

      每一个 schema 元素由一个 OID(对象标志符)来作唯一标志。(用户可以自己定义) OID 是由 1 段或多段十进制数字组成,段之间以点(%x2E,".")分隔,例如”1.2.3.4”. 其中第 1 段(或称根 OID,base OID)需向
      IANA 免费申请.如果用户需要自定义 schema 要素,应申请自己组织的根 OID,不要使用其他组织的或臆想的根 OID。

    2. 元素格式


 


以上是关于LDAP基础知识的主要内容,如果未能解决你的问题,请参考以下文章

LDAP基础知识

LDAP理论知识

Spring Boot 2.x基础教程:使用LDAP来管理用户与组织数据

6-java安全基础——JNDI和LDAP利用

6-java安全基础——JNDI和LDAP利用

6-java安全基础——JNDI和LDAP利用