理解LDAP

LDAP,全称为Lightweight directory access protocol,轻量级目录访问协议,是用于用户管理的标准协议,或者说是一种语言规范。使用LDAP协议,可以帮助用户快速找到需要的信息。

基于LDAP协议,可以实现各种各样的目录程序。微软的AD(Active Directory)也是基于LDAP的解决方案。我们通常说的LDAP Server,其实一般指的是搭载了这类目录程序的服务器。

概念介绍

下图是一个LDAP目录的示例,可以帮助我们理解相关的概念

目录(Directory)

我们可以将目录看是一个特殊的数据库,一个树状结构的数据存储,所以我们也会把这种结构称为目录树。

注意,这里的树状结构知识为了方便理解,目录树结构只定义了数据的访问方式,与数据本身的存储实现方式无关。

目录树里面每一个节点都是一个条目,每个条目可能有零个或N个子条目。

目录树的根节点是一个特殊的条目,一般称为RootDSE(Root Directory Server Agent Service Entry)。

一般在根节点表示当前服务器的域,如上图所示,根节点是dc=people,dc=com。

对象类(ObjectClass)

相信你已经发现了,在ldap目录里,一切都是条目。为了区分不同的对象,LDAP定义了ObjectClass的概念,上图的dc,ou都属于ObjectClass。每个条目包含一个或多个对象类。

LDAP预置了很多ObjectClass。

属性(Attributes)

所有的属性必须归属于某一个或多个对象类,并定义了自身所包含的数据类型。每个属性都要有一个唯一的名称,值可以是单值,也可以是多值。

DN和RDN RDN(Relative Distinguished Name),指当前节点相对于父节点的名称,如上图的cn=Robert Smith。

DN(Distinguished Name),是每一个节点在目录里的唯一标识符,DN是由很多个RDN组成的,对于上图的cn=Robert Smith节点,其DN为cn=Robert Smith,ou=people,dc=example,dc=com。

如果一个条目从一个父节点移动到另一个父节点,其dn将被更改。