一、LDAP简介

LDAP(全称Light Directory Access Portocol),它是基于X. 500标准的轻量级目录访问协议。它支持TCP/IP,它是抽象的。有很多人直接把LDAP说成数据库,当然它可以被理解成存储数据的数据库,它和其他数据库一样也是有client端和server端,其中server端是用来存放资源,client端用来操作增删改查等操作的。

我们通常说的LDAP是指运行这个数据库的服务器。

AD:是微软出的一套LDAP的实现,AD=LDAP服务器+LDAP应用。

像Mysql数据库等,数据都是一条条的存放在表中,而LDAP数据库,是树形结构的,数据存储在叶子节点上

那什么时候使用树形数据库的效果会更好?当需要存储大量数据,而且数据不经常更改,而且需要很快速的查找的时候,树形数据库效果会更好。

LDAP是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。

LDAP目录服务是由目录数据库和一套访问协议组成的系统。

二、目录树的概念

(1)目录树 :在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目
(2)条目:每个条目就是一条记录,每个条目都有自己的唯一可区别的名称(DN)。
(3)对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。

Objectclass:LDAP对象类,是LDAP内置的数据模型,每种objectclass都有自己的数据结构。

LDAP中,每一条实体(Entry)必须包含一条ObjectClass,而且至少要有一个值,这些值用来存储这条数据的模板,其中包含了必填的属性以及可选择的属性。

objectClass可以分为三类:
结构型(Structural):如account、inetOrgPerson、person和organizationUnit;
辅助型(Auxiliary):如extensibeObject
抽象型(Abstract):如top,抽象型的objectClass不能直接使用。

(4)属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。

ldap python服务端 ldap服务器的作用_ldap python服务端

可能大家对上面的概念还不太清晰,引用[https://www.jianshu.com/p/7e4d99f6baaf]中的一个例子来说明:

ldap python服务端 ldap服务器的作用_数据库_02


就这样我们就可以清楚的描述一条树形结构上的数据了。

树:dc=tree
分叉:ou=north,ou=west,ou=east
苹果:cn=redApple

那么我们就能清楚的表达出该苹果的位置了,也就是dn(dn标识一条记录,描述了一条记录的详细路径)。

dn:cn=redApple,ou=north,ou=west,ou=east,dc=tree

Tips:dn后面的一长串,分别为cn,ou,dc;中间用逗号隔开,其中ou都可以有多个。

总结:
dn:一条记录的详细位置(红苹果所在的详细位置)
dc:一条记录所属的区域(哪一棵树)
ou:一条记录所属的组织(哪一个分支)
cn/uid:一条记录的名字/ID(哪一个苹果的名字)
LDAP目录树的最顶部就是根,也就是所谓的“基准DN”。
Client/server模型,Server 用于存储数据,Client提供操作目录信息树的工具。
LDAP是一种开放Internet标准,LDAP协议是跨平台的Interent协议。