(1) 什么是LDAP
LDAP, Lightweight Directory Access Protocol, 轻量级目录访问协议,是X.500协议的简化版本。LDAP的规范为RFC 2251(ftp://ftp.isi.edu/in-notes/rfc2251.txt),"The Lightweight Directory Access Protocol (v3)"。Microfost的Active Directory,Lotus的Domino Directory、IBM的WebSphere都是LDAP的实现,LDAP的开源实现是OpenLDAP。
LDAP由以下几部分组成:
LDAP协议,一个标准的、可扩展的Internet目录访问协议;
使用目录的四种模型:信息模型,信息如何存储;命名模型,如何安排和引用目录数据;功能模型,如何操作数据;安全模型,如何进行访问控制;
LDIF,LDAP Data Interchange Format,标准的交换目录数据的文本格式;
LDAP服务软件;
和LDAP服务软件捆绑在一起的命令行工具和基于LDAP的应用程序;
LDAP编程API,用于开发LDAP客户应用程序。
(2) LDAP协议
客户端发起一个请求消息,请求LDAP服务器的某条目录信息,该请求包含唯一的消息ID,如下图。
![](http://www.devfront.com/files/RetrieveSSingleEntry.gif)
服务器收到该请求后,返回客户需要的信息,然后在一条独立的消息中返回结果代码。客户端也可以在一条消息中请求多条目录信息,服务器依次返回这些目录条目,并在最后一条消息中返回结果代码,如下图。
![](http://www.devfront.com/files/RetrieveSingleEntry.gif)
客户端还可以同时发出多条请求消息,服务器响应这些请求,响应中包含请求消息ID,如下图。
![](http://www.devfront.com/files/RetrieveMultiEntries.gif)
LDAP协议的操作分为三大类:
查询操作:search, compare
更新操作:add, delete, modify, modify DN(rename)
认证和访问控制:bind, unbind, abandon
下图是一个典型的LDAP协议操作过程。
![](http://www.devfront.com/files/LDAPExchange.gif)
I. 客户端向LDAP服务器打开TCP连接,提交一个bind操作,该操作包