LDAP协议是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写。通过将相关的内容存放在统一的目录之下,目录服务为用户提供了基于客户/服务器工作方式的信息查询手段。LDAP目录服务是以登记项为基础的。一个目录登记项是一个属性的集合,有一个名字,用来标识该登记项其中的每个属性都有一个类型和若干值。值的表示取决于属性类型。登记项按照层次组织成树状结构。LDAP协议基于目录访问协议X.500标准,但是比X.500标准简单了许多,并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对基于Web的网络应用和访问Internet是必须的。目前LDAP技术发展得很快,而且应用前景非常广泛。在局域网范围内应用轻量目录访问协议(LDAP),可以让网络中运行在几乎所有计算机平台上的所有的应用程序从LDAP目录中获取信息。 LDAP目录中可以存储各种类型的用户数据,如用户名、组织名、电子邮件地址、邮件路由信息、人力资源数据、公用密匙、联系人列表等。通过把LDAP目录作为系统集成和统一用户管理中的一个重要环节,可以简化用户在网络内部查询信息的步骤,甚至主要的数据源都可以放在任何地方。
轻量目录访问协议是基于Web的目录管理系统。目录与关系数据库相似,是指具有描述性的基于属性的记录集合,但它的数据类型主要是字符型,为了检索的需要添加了 BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法(Syntax),而不是关系数据库提供的整数、浮点数、日期、货币等类型,同样也不提供像关系数据库中普遍包含的大量的函数,它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制,数据修改使用简单的锁定机制实现All-or-Nothing,它的目标是快速响应和大容量查询,并且提供多目录服务器的信息复制功能。
LDAP的最大特点是可以在任何计算机平台上,用容易获得且数目不断增加的LDAP的客户端程序访问LDAP目录,而且也很容易定制应用程序并为它添加LDAP支持。
LDAP协议是跨平台的和标准的协议,因此应用程序可以将LDAP目录放在任何操作系统的服务器上。因为是Internet的标准,所以LDAP得到了广泛的应用。支持LDAP的应用产品不用考虑客户端或服务端是怎么样的,LDAP服务器可以是任何一个开发源代码或商用的LDAP目录服务器。因为可以用同样的协议、客户端连接软件包和查询命令与LDAP服务器进行交互。大多数的LDAP服务器安装起来很简单,也容易维护和优化。
LDAP服务器可以用“推”或“拉”的方法复制部分或全部数据,例如:可以把数据“推”到远程的办公室,以增加数据的安全性。复制技术是内置在LDAP服务器中的,而且很容易配置。如果要在DBMS中使用相同的复制功能,数据库生产商就会要用户支付额外的费用,而且也很难管理。
LDAP允许用户根据需要使用ACI(访问控制列表)控制对数据读和写的权限。例如,设备管理员可以有权改变员工的工作地点和办公室号码,但是不允许改变记录中其他的域。 ACI可以根据谁访问数据、访问什么数据、数据存在什么地方,以及其他信息对数据进行访问控制。因为这些都是由LDAP目录服务器完成的,所以不用担心在客户端的应用程序上是否要进行安全检查。
LDAP是目录服务在TCP/IP上的实现(RFC 1777 V2版和RFC 2251 V3版)。它是对 X·500的目录协议的移植,但是简化了实现方法,所以称为轻量级的目录服务。在LDAP中目录是按照树型结构组织,目录由条目(Entry)组成,条目相当于关系数据库中表的记录;条目是具有区别名(DN,Distinguished Name)的属性(Attribute)集合,DN相当于关系数据库表中的关键字(Primary Key)。属性由类型(Type)和多个值(Values)组成,相当于关系数据库中的域(Field)由域名和数据类型组成,这只是为了方便检索的需要。LDAP中的Type可以有多个Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进行组织,非常直观。LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据库。LDAP协议集还规定了DN的命名方法、存取控制方法、搜索格式、复制方法、URL格式、开发接口等。