LDAP (Light Directory Access Protocol )即轻量级目录访问协议,目前LDAP 服务器的实现有多种,如Oracle Directory Server 、OpenDS 、ApacheDS 等,本文中使用的服务器为ApacheDS ,可视化的管理工具为Apache Directory Studio ,官方下载地址:http://directory.apache.org/。
本文主要介绍LDAP中的条目(Entry),关于LDAP更详细的介绍参见这篇文章:http://www.iteye.com/topic/167125
LDAP 服务器中的数据是以树状结构组织的,树状结构中的每一个节点称之为条目(Entry ), 每个条目由诸多属性及属性值组成,如下图所示:
图中左侧窗口展示的是整个LDAP 服务器的树状结构,右侧是某条目的具体内容,每个条目都有一个可用于区别树中其他条目的名称,称为DN (Distinguished Name ),每个DN 是由条目自身名称(RDN )和其父亲DN (BaseDN )组成,如上图右侧显示的条目,其DN: cn=Cornelius Buckley,ou=people,o=sevenSeas ,RDN 为cn=Cornelius Buckley ,BaseDN 为ou=people,o=sevenSeas ,从条目的DN 名称也能看出条目在树中的位置。
既然条目是由属性构成的,那么,一个条目需要定义哪些属性呢?
每个条目都必须有若干objectClass 属性,objectClass 属性的值是LDAP 服务器中已经定义好了某个Schema 的名称,每个Schema 都定义了一些必选属性、可选属性等,以person 这个Schema 为例,其定义如下图所示:
每个条目必须定义其对应Schema 的必选属性,Schema 的可选属性对于条目来说也是可选的,条目不可以定义除必选属性和可选属性之外的其他任何属性。所以,一个定义了objectClass=person 的条目,必须定义的属性有cn 、sn ,可有可无的属性有description 、seeAlso 、telephoneNumber 、userPassword 。
条目的属性名称都是有其字面含义的,如果由于部分属性采用了简写形式而显得不那么直观,尤其对于初学者来说,下面列出了几个常用的简写属性的意义:
o :organizationName
ou :organizationalUnitName
cn :commonName
sn :surname
dc :domainComponent
uid :userID
以上属性都能从Schema 定义中查出来。