1. 目录结构

域名→部门→个人

2. 条目(Entry)

条目(Entry)就是目录管理的对象,他是LDAP中最基本的颗粒,就像字典中的词条,或者是数据库中的记录。通常对LDAP的添加、删除、更改、检索都是以条目为基本对象的。

每一个条目都有一个唯一的标识名(distinguished Name ,DN),比如(1.1中图2互联网域名树形图):cn=bu,ou=Ops,dc=fangmou,dc=com。DN在语法上是由多个相对的标识名(distinguished Name ,DN)组成的,他们之间由逗号分隔。如果把DN看做对象的全路径,那么RDN就是其中的每一段路径。通过DN的层次型语法结构,可以方便地表示出条目在LDAP树中的位置。有时在不一致引起歧义的情况下,RDN也特指DN中最靠前的一段,而剩余的部分称为父标识(Parent DN,PDN)。此处不再举例。RDN本身也可以由多个值构成,比如OU=Tech+CN=bu,dc=fangmou,dc=com中的RDN为OU=Tech+CN=bu,由2个值OU=Tech和CN=bu组成,他们之间由加好隔开。

如果DN中含有一些特殊字符,比如:,=+<>;\”,他们需要转转义符(\)来帮助表述。

3. 属性(Attribute)

每个条目都可以有很多属性(Attribute),比如常见的人都有姓名、地址、电话等属性。每个属性都有名称及对应的值,属性值可以有单个、多个。比如你有多个电话。

LDAP为人员组织机构中常见的对象都设计了属性(比如commonName,surname)。下面有一些常用的别名

属性 别名 语法 描述 值(举例)

commonName

cn

Directory String

姓名

zhangsan

surname

sn

Directory String

Zhang

organizationalUnitName

ou

Directory String

单位(部门)名称

Tech

organization

o

Directory String

组织(公司)名称

fangmou

telephoneNumber

Telephone Number

电话号码

110

owner

DN

该条目的拥有者

cn=zhangsan,ou=ops,dc=fangmou

jpegPhoto

Binary

JPEG照片

4. 属性类型(AttributeType)

每个属性都有唯一的属性类型(AttributeType),属性类型约定属性值的数据格式和语法类型(Syntax)。比如,属性cellPhone的类型为telephoneNumber,它规定了电话号码是由数字组成的,其中允许插入一些分隔符,如连接符、括号、空格等。

属性类型也约定了属性值是否可以有多少个,多值属性类型也可以使人员信息的组织变得更加灵活并接近现实情况,比如:人员的手机、地址、邮箱等属性都可以有多个值。这样,用ldap组织的信息会比简单的表结构更加理想。

类型也规定了属性查询时的匹配规则、排序顺序、大小写敏感等。

5. 对象类(ObjectClass)

对象类(ObjectClass)是属性的集合,LDAP预想了很多人员组织机构中常见的对象,并将其封装成对象类。比如人员(person)含有姓(sn)、名(cn)、电话(telephoneNumber)、密码(userPassword)等属性,单位职工(organizationalPerson)是人员(person)的继承类,除了上述属性之外还含有职务(title)、邮政编码(postalCode)、通信地址(postalAddress)等属性。

通过对象类可以方便的定义条目类型。每个条目可以直接继承多个对象类,这样就继承了各种属性。如果2个对象类中有相同的属性,则条目继承后只会保留1个属性。对象类同时也规定了那些属性是基本信息,必须含有(Must 活Required,必要属性):哪些属性是扩展信息,可以含有(May或Optional,可选属性)。

对象类有三种类型:结构类型(Structural)、抽象类型(Abstract)和辅助类型(Auxiliary)。结构类型是最基本的类型,它规定了对象实体的基本属性,每个条目属于且仅属于一个结构型对象类。抽象类型可以是结构类型或其他抽象类型父类,它通过将对象属性中共性的部分组织在一起,称为其他类的模板,条目不能直接集成抽象型对象类。辅助类型规定了对象实体的扩展属性。虽然每个条米只属于一个结构型对象类,但可以同时属于多个辅助型对象类。

对象类本身是可以相互继承的,所以对象类的根类是top抽象型对象类。以常用的人员类型为例,他们的继承关系如下: top–>person–>organizationalPerson–>inetOrgPerson

6. 模式(Schema)

对象类(ObjectClass)、属性类型(AttributeType)、语法(Syntax)分别约定了条目、属性、值,这些构成了模式(Schema),模式中的每一个元素都有唯一的OID编号,条目数据在导入时通常需要接受模式检查,它确保了目录中所有的条目数据结构都是一致的。