LDAP是light weight Directory Access Protocol (轻量级目录访问协议)的缩写,其前身是更为古老的DAP协议。基于X.500标准的,但是很简单,并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,大体上讲,LDAP协议定义了和后台数据库通信的方法、客户端软件和LDAP协议之间的通信标准,如后图。
LDAP Client是指各种需要身份认证的软件,例如Apache、ProFTPD和Samba等。LDAP Sever指的是实现LDAP协议的软件,例如OpenLDAP等。DataStorage指的是OpenLDAP的数据存储,如关系型数据库(Mysql)或查询效率更高的嵌入式数据库(BerkeleyDB),甚至是平面文本数据库(一个TXT的文本文件)。可见OpenLDAP软件只是LDAP协议的一种实现形式,并不包括后台数据库存储,但在很多时候管理员经常将LDAPServer和DataStorage放在同一服务器中,这样就产生了常说的LDAP数据库,虽然后台数据库可以多种多样,但LDAP协议还规定了数据的存储方式。LDAP数据库是树状结构,与DNS类似。
webldap架构
在图右中,以这种方式存储数据最大的一个好处就是查询速度块,LDAP数据库专门对读操作进行了优化,OpenLDAP配合Berkeley DB 可使其读操作的效率得到很大提高,LDAP数据库的树状结构的另一个好处是便于分布式的管理。
实现思路
同一身份认证是改变原有的认证策略,使需要认证的软件都通过LDAP进行认证,如下图。在同一身份认证之后,用户的所有信息都存储在LDAP Server中。终端用户在需要使用公司内部服务的时候都需要通过LDAP服务器的认证。每个员工只需记住一个密码,在需要修改用户信息的时候可以通过管理员提供的Web界面直接修改LDAP Server中的信息。