一、LDAP信息模型
LDAP信息模型定义了在目录中保存信息的最基本的单位和数据类型。目录中的最基本的信息单位是条目(Entry)。条目由一系列的属性(Attribute)构成,一个属性可以有多个值(Value)。条目的结构在Schema中定义。Schema可以定义一类条目必须属性和可选属性,以及各个属性的类型和比较方法。
二、LDAP命名模型
LDAP命名模型定义了如果组织和查询目录中的数据。命名模型为每一个Entry指定了唯一的识别名(DN/Distinguished Name),如:uid=name,ou=people,dc=example,dc=com(','后可以跟空格,不影响DN的值)。DN中最左边的值为相对识别名(RDN/Relative Distinguished Name)。虽然DN在目录中必须是唯一的,但是在不同的目录中可以有相同RDN的Entry。
别名,通过建立Object Class为alias的Entry,可以为目录建别名。但不建议使用。
DN中的特殊字符(,)应该在之前加反斜杠(/)。
特殊字符表
特殊字符 | ASII码 | 使用值 |
DN、RDN前后的空格 | 32 | /<space> |
DN、RDN前后的井号(#) | 35 | /# |
逗号(,) | 44 | /, |
加号(+) | 43 | /+ |
双引号(") | 34 | /" |
反斜杠(/) | 92 | // |
小于号(<) | 60 | /< |
大于号(>) | 62 | /> |
分号(;) | 59 | /; |
三、LDAP功能模型
功能模型中定义了一系列利用LDAP协议的操作。它包含了三个部分:
1)、查询操作(Interrogation Operations):容许查询目录和取得数据。它包含Search Operating和Compare Operation。
2)、更新操作(Update Operations):容许添加(ADD)、删除(Delete)、重命名(Rename)和改变目录(Modify)。
3)、认证和管理操作(Authentication And Control Operations)容许客户端在目录中识别自己,并且能够控制一个Session的性质。
1、The LDAP Search Operation
The LDAP Search Operation被用来查询目录中的Entry和取得目录中的Entry。它需要8个参数:
1)、Base Object for the Search:包含指定需要查询目录的根Entry的DN。
2)、Search Scope:指定查询的范围,可能包含sub,onelevel和base。sub指查询Base Object指定的所有子目录,包括根目录;onelevel指仅仅查询根目录的下一层目录;base只查询根目录本身。
3)、Alias Dereferencing Options:指定查询时如何处理别名,可能包含neverDerefAliases,derefInSearching,derefFindingBaseObject,derefAlways。neverDerefAliases指在查询和定位中考虑别名;derefInSearching指定位Base Object时考虑别名,但查询子目录时不考虑;derefFindingBaseObject指定位Base Object时不考虑别名,但查询子目录时考虑;derefAlways指在查询和定位中都不考虑别名。
4)、Size Limit:返回Entry的最大个数。如实际检索结果多于Size Limit,就只返回前Size Limit个Entry,并返回LDAP_SIZELIMIT_EXCEEDED。如Size Limit值为0,表示接受所有检索结果。但服务器设定的上限,不能通过这个属性修改。
5)、Time Limit:应答查询消息的最大秒数。如超时应返回LDAP_TIMELIMIT_EXCEEDED。值为0表示没有限制。
6)、Attributes-only Parameter:如这个字段被设置为TRUE,那么仅返回属性的类型,而不返回值。如为False,则类型和值都返回。
7)、Search Filter:返回的Entry的类型。
8)、List of Attributes to Return:返回属性的类型,如为空或*,则返回所有属性。
2、The Compare Operation
这个操作被用来验证一个Entry是否存在。如果客户端提供的DN,和属性值存在就返回一个肯定的回复,否则返回一个否定的回复。这个操作只有在以下的情况下和Search Operation反映不一样。当提供的Comparison中的一个属性,在这个Entry中存在时,Compare Operation会返回一个特定的回复表示这个属性不存在,而Search Operation不会做特殊的处理。
3、The Add Operation
添加错误容许创建一个新的Directory Entry。它有两个参数:DN和属性集。添加一个Entry时必须满足以下四个条件:
1)、新Entry的父Entry必须已经在目录中存在。
2)、提供的DN必须唯一。
3)、新Entry必须符合有效的Schema。
4)、访问控制必须容许这个操作。
4、The Delete Operation
删除操作容许从目录中删除一个Entry。它只有一个参数:DN。删除一个Entry必须满足以下三个条件:
1)、被删除的Entry必须已经存在。
2)、被删除的Entry必须没有子对象。
3)、访问控制必须容许这个操作。
5、The Rename(Modify DN) Operation
重命名操作容许修改Entry的名字,或在目录中移动Entry。它有四个参数:被操作Entry的DN,新的RDN,可选新父Entry的DN,Delete-Old-RDN标志。重命名一个Entry必须满足以下三个条件:
1)、被操作的Entry必须存在。
2)、新的DN必须唯一。
3)、访问控制必须容许这个操作。
如果只是重命名,不改变目录,就将new-parent空着。delete-old-RDN是一个boolean型的标志,表示重命名后旧的RDN是否需要继续保存在Entry中。
LDAPv2只有修改RDN的操作,没有修改DN的操作。
6、The Modify Operation
修改操作容许更新一个已存在的Entry。它有两个参数:被修改Entry的DN和修改的属性集。修改操作能够给Entry的属性添加新的属性值,删除一个属性的值,将一些属性的值更新为新的值。修改一个Entry必须满足以下两个条件:
1)、被修改的Entry必须存在。
2)、所有属性的修改操作必须全部成功。
3)、修改后的Entry必须符合Schema。
4)、访问控制必须容许这个操作。
所有的属性的修改必须全部成功,否则整个Entry都不会被修改。
7、The Bind Operation
通过提供DN和证书,一个客户端可以使用Bind操作认证自己。服务器判断客户端提供的DN和证书是否正确,如正确服务器就提供给客户端一定的权限。
8、The Unbind Operation
当客户端调用Unbind操作时,服务器会丢弃所有客户端的证书,停止与客户端的连接,中止所有操作。
9、The Abandon Operation
Abandon操作只有一个参数:将被丢弃的LDAP操作的Message ID。当客户端不再希望取得指定操作的结果时,调用Abandon操作。
四、LDAP安全模型