LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)是目录服务在TCP/IP上的实现。它是对X500的目录协议的移植,但是简化了实现方法,并且可以根据需要定制。
LDAP是一个用来发布目录信息到许多不同资源的通讯协议。通常它都作为一个集中的地址被使用,不过根据组织者的需要,它可以做得更加强大。从另一个意义上讲,LDAP是实现了指定的数据结构的存贮,它是一种特殊的数据库。但是和一般的数据库不同的是,LDAP对查询进行了优化,与写性能相比LDAP的读性能要优秀很多。LDAP作为一个统一认证的解决方案,主要的优点就在能够快速响应用户的查找需求。简单的说,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。
在LDAP中,目录类似于文件系统目录,以树型结构来存储数据。目录由条目(Entry)组成。条目是具有DN(Distinguished Name,区别名)的属性(Attribute)集合。DN是用来读取单个记录,以及回溯到树的顶部。属性由类型(Type)和多个值(Values)组成,为了方便检索的需要,LDAP中的Type可以有多个Value。LDAP中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。
LDAP连接服务器的连接字串格式为:ldap://servername/DN。
其中,DN有三个属性,分别是:
LDAP目录树的最顶部是根,也就是所谓的“基准DN”。基准DN通常有三种格式,目前最流行的一种格式是以DNS域名的不同部分来组成基准DN),例如:DC=XinSheng,DC=Huawei,DC=com。如果我们类比文件系统的话,不妨把它看作如下文件路径:Com/Huawei/Xinsheng。
一个完整的DN示例为:CN=code-farmer,OU=developer,DC=domainname,DC=com。
OpenStack在Grizzly版本上对LDAP验证机制已经有非常好的支持,但对LDAP服务有较为严苛的要求。
OpenStack Keystone利用现有的LDAP后端进行账户验证时,LDAP服务需要满足Keystone的一些较为严苛的需求,主要有以下几点:
1) 《OpenStack Keystone与只读LDAP集成》,http://tech.it168.com/a2013/1112/1558/000001558628_all.shtml