Files
Knowledge/sunyard/标准/LDAP模型简介+2ea0c61c-1e7f-48d4-8a4e-43a790113dd1.md
T

113 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
LDAP模型是从X.500协议中继承而来的,是LDAP的一个组成部分,用于指导客户如何使用目录服务。LDAP定义了4个模型,包括信息模型(Information Model)、命名模型(Naming Model)、功能模型(Functional Model)、安全模型(Security Model)。
**1.信息模型**
LDAP信息模型用于描述LDAP中信息的表达方式,包含3部分:条目(Entries)、属性(Attribute)、值(Values)。LDAP使用专有逻辑格式存储信息,这种模型既不是关系的,也不是完全面向对象的。简单概括为:
① LDAP中信息逻辑上表示为条目。
② 条目包含一到多个对象类。
③ 每个对象类由多个属性组成。
④ 每个属性包含一到多个同一类型的数值。
⑤ 对象类和属性的类型定义构成了schema。
条目是目录中最基本的信息单元,可以理解为目录树中的一个节点。LDAP客户和服务器使用条目共享信息,条目是LDAP服务器的基本元素。执行搜索时服务器返回一组匹配条目,但修改时一次只能影响服务器中的一个条目。条目可以被任何支持LDAP的客户端创建,或通过使用服务器工具导入,也可由应用程序基于非LDAP数据或用户信息创建。
在目录中添加一个条目时,该条目必须包含一个或者多个对象类(objectClass),每一个对象类规定了该条目中的必选属性和可选属性。图6-1展示了一个典型目录的一部分,它反映了现实世界中一个组织的管理对象。
![http://scanywhere.com/images/technology/LDAP-1.jpg](http://scanywhere.com/images/technology/LDAP-1.jpg)
**图6-1 组织结构目录树**
每一个条目都有一个DN(distinguished name,辨别名),用于唯一标识条目在目录中的位置,本书将在命名模型中详细介绍DN。
每个条目都是由多个属性组成的,每一个属性描述了对象的一个约束。每个属性具有一个类型和一个或多个值。该类型描述了包含在属性中的信息类型,其值中包含实际数据。
例如,表6-1描述了一个人员条目,属性包括全称、名、姓、电话号码、电子邮件地址。
|||
|-|-|
|属性类型|属性值|
|cn|张三|
|telephoneNumber|5804669062300098|
|mail|zs@163.com|
**表6-1人员属性**
属性有与之关联的语法和匹配规则,属性语法指定可以在属性中存放的数据格式,如INTEGER语法允许值中只包含数字,不能包含非数字字符。
匹配规则作用有二:第一,比较值是否相等;第二,对值进行排序。
**2.命名模型**
LDAP命名模型定义了如何在目录系统中组织数据以及如何从目录系统中查找数据命名模型的灵活性可以使你很方便地以想要的方式组织数据。例如,可以把组织中所有员放在一个容器下,所有组放在一个容器下,或按组织结构的地理分布组织目录结构。
LDAP命名模型指定将条目按类似倒立的树结构进行规划,非常类似于UNIX系统的文件系统,如图6-2和图6-3所示。
![http://scanywhere.com/images/technology/LDAP-2.jpg](http://scanywhere.com/images/technology/LDAP-2.jpg)
**图6-2 目录树结构**
![http://scanywhere.com/images/technology/LDAP-3.jpg](http://scanywhere.com/images/technology/LDAP-3.jpg)
**图6-3 UNIX 文件系统**
在LDAP目录中任何一个节点都可以包含信息,同时也可以是一个容器,也就是说任何一个LDAP条目都可以有子节点。图6-4表示了一个典型的目录结构,在目录树中,条目ou-People,dc-example,dc=com和条目ou=Devices,dc=example,dc=com都既包含属性又包含子节点。
通过命名模型,可以给出目录中任何条目的唯一名称,从而可以毫无歧义地引用任一个条目。在LDAP中使用DN来引用条目。
在目录中,按目录树从下到上对条目进行命名,如图6-4中的灰色条同的DN名称为uid=bjensen,ou=people,dc=example,dc=com。因为这种树形结构决定了从根节点到其他任何节点的路径是唯一的,所以说每一个条目的DN是唯一的。
![http://scanywhere.com/images/technology/LDAP-4.jpg](http://scanywhere.com/images/technology/LDAP-4.jpg)
**图6-4 典型目录结构**
在DN中最左边的内容称为相对辨别名(RDN,Relative Distinguished Name)。如ou=People,dc=example,dc=com的RDN为ou=People。对于共享同一个父节点的所有节点的RDN必须是唯一的。如果不属于同一个父节点,则节点的RDN可以相同。当特殊字符出现在DN中时,必须进行转义,如表6-2所示。
||||
|-|-|-|
|字符|数值|转义序列|
|在DN或RDN开始或结尾的空格|32|\空格|
|在DN或RDN开始的#|35|\#|
|逗号(,)|44|\,|
|加号(+)|43|\+|
|双引号(“)|34|\”|
|反斜线(\)|92|\\|
|小于符(<)|60|\<|
|大于符(>)|62|\>|
|分号(;)|59|\;|
表6-2 特殊字符转义表
**3.功能模型**
LDAP功能模型描述了LDAP协议可以采用的相关操作,以访问存储在目录树中的数据。在LDAP中共有4类10种操作。
①查询类操作,如搜索、比较。
②更新类操作,如添加条目、删除条目、修改条目、修改条目名。
③认证类操作,如绑定、解绑定。
④其他操作,如放弃和扩展操作。
除了扩展操作,另外9种是LDAP的标准操作。扩展操作是LDAP中为了增加新的功能提供的一种标准的扩展框架,当前已经成为LDAP标准的扩展操作,有修改密码和StartTLS扩展,在新的RFC标准和草案中正在增加一些新的扩展操作,不同的LDAP厂商也均定义了自己的扩展操作。
**4.安全模型**
安全模型提供一个安全框架,保护目录中的信息不被非法访问。LDAP中的安全模型主要通过身份认证、安全通道和访问控制(ACL)实现。
LDAP是一个面向连接的协议,在能够对LDAP目录进行任何操作之前,LDAP客户端必须获得一个到LDAP服务端的连接,在这个过程中需要对LDAP客户端的身份进行验证,这一过程可以理解为用户绑定。
LDAP v2只支持简单的密码验证。LDAP v3实现了SASL安全框架,SASL为多种验证协议提供了一种标准的验证方法,对于不同的验证系统,可以实现特定的SASL机制。
在LDAP中提供了基于SSL/TLS的通信安全保障。SSL/TLS基于PKI信息安全技术,LDAP通过StartTLS方式启动TLS服务,可以提供通信中的数据保密性、完整性保护;通过强制客户端证书认证的TLS服务,同时可以实现对客户端身份和服务器端身份的双向验证。
在用户通过验证之后,可以为该用户分配附加的权限。比如,一些用户只能查看特定的条目,而不能修改;一些用户可以查看并且修改所有的条目等。这一过程可以理解为访问控制。