1、1. 引言目录服务是用于在全球范围内查找用户和商业伙伴的强大的搜索工具。近几年,随着 LDAP(Light Directory Access Protocol,轻量级目录访问协议)技术的兴起和应用领域的不断扩展,目录服务技术成为许多新型技术实现信息存储、管理和查询的首选方案,特别是在网络资源查找、用户访问控制与认证信息的查询、新型网络服务、网络安全、商务网的通用数据库服务和安全服务等方面,都需要应用目录服务技术来实现一个通用、完善、应用简单和可以扩展的系统。2. LDAP 的介绍LDAP(Lightweight Directory Access Protocol) ,轻量级目录访问协议。它是目
2、录访问协议一个标准。它是基于 X.500 标准的,可以根据需要定制。轻量级目录访问协议以信息目录的形式存在,在该目录中可只定义一次用户和组,而在多台机器和多个应用程序间共享它们。LDAP 定义与目录服务进行通信所使用的操作,如何找到目录中的实体,如何描述实体属性,以及许多安全特性。这些安全特性可用于对目录进行身份验证,控制对目录中的实体的访问。LDAP 标准中没有定义在目录服务器上存储信息的方式。为实施 LDAP 服务器,使用了许多不同的技术。这些技术包括简单的平面文件、索引文件和相关数据库。无论使用什么技术来实施目录, 从 LDAP 客户端对目录的所有访问都使用相同的标准协议:LDAP。为此
3、,尽管存在不同的内容结构,这些目录都被称为 LDAP 目录服务器。在企业范围内实现 LDAP 可以让运行在几乎所有计算机平台上的所有的应用程序从 LDAP 目录中获取信息。LDAP 目录中可以存储各种类型的数据:电子邮件地址、邮件路由信息、人力资源数据、公用密匙、联系人列表,等等。通过把 LDAP 目录作为系统集成中的一个重要环节,可以简化员工在企业内部查询信息的步骤,甚至连主要的数据源都可以放在任何地方。3. LDAP 的组成目录服务就是按照树状信息组织模式,实现信息管理和服务接口的一种方法。目录服务系统一般由两部分组成:第一部分是数据库,一种分布式的数据库,且拥有一个描述数据的规划;第二部
4、分则是访问和处理数据库有关的详细的访问协议。目前,目录服务技术的国际标准有两个,即较早的 X.500 标准和近年迅速发展的 LDAP 标准。 X.500 是一个协议族 X.500 实际上不是一个协议,它是由一个协议族组成:X.501 模型强调目录服务基本模型和概念;X.509 认证框架是如何在 X.500 中处理目录客户和服务器的认证;X.511 抽象服务定义 X.500 被要求提供的功能性服务;X.518 分布式操作过程表明如何跨越多台服务器处理目录服务;X.519 协议规范即是X.500 协议,包括目录访问协议 DAP、目录系统协议 DSP、目录操作绑定协议DOP 和目录信息 Shadow
5、ing 协议 DISP; X.520 选定的属性类型要求是 X.500 自己使用的属性类型;X.521 选定的对象类即为 X.500 自己使用的对象类;X.525复制是如何在目录服务器之间复制目录内容。X.500 虽然是一个完整的目录服务协议,但在实际应用的过程中,却存在着不少障碍。由于目录访问协议 DAP 这种应用层协议是严格遵照复杂的 ISO 七层协议模型制定的,对相关层协议环境要求过多,主要运行在 UNIX 机器上,在许多小系统上,如 PC 和 Macintosh 上无法使用,因此没有多少人按照 DAP 开发应用程序,TCP/IP 协议体系的普及,更使得这种协议越来越不适应需要。 LDA
6、P 目录访问标准 LDAP 协议从 1993 年批准,产生了 LDAP V1 版本,随后于 1997 年发布了第三个版本 LDAP V3,它的出现是 LDAP 协议发展的一个里程碑性标志,它使 LDAP协议不仅仅作为 X.500 的简化版,同时提供了 LDAP 协议许多自有的特性,使 LDAP 协议功能更为完备,具有了更大的生命力。LDAP V3 协议也不是一个协议,而是一个协议族。 RFC 2251LDAP V3 核心协议,定义了 LDAP V3 协议的基本模型和基本操作;RFC 2252定义了LDAP V3 中的基本数据模式(Schema) (包括语法、匹配规则、属性类型和对象类)以及标准
7、的系统数据模式;RFC 2253定义了 LDAP V3 中的分辨名(DN)表达方式;RFC 2254定义了 LDAP V3 中的过滤器的表达方式;RFC 2255LDAP 统一资源地址的格式;RFC 2256在 LDAP V3 中使用 X.500 的Schema 列表;RFC 2829定义了 LDAP V3 中的认证方式;RFC 2830定义了如何通过扩展使用 TLS 服务;RFC 1823定义了 C 的 LDAP 客户端 API 开发接口;RFC 2847定义了 LDAP 数据导入、导出文件接口 LDIF。但在 LDAP 协议中尚未定义通用的访问控制模型和复制协议(对应 X.500 的映射协
8、议 DISP) ,尽管不同的 LDAP 厂商均实现了自己的控制模型和复制机制,但是 LDAP 标准的发展正集中在访问控制模型、复制协议(DUP)以及扩展操作上,这些扩展操作包括查询的分页和排序、语言标签、动态目录、LDAP 服务发现等。4. LDAP 的 4 种基本模型1) 信息模型:描述 LDAP 的信息表示方式 在 LDAP 中信息以树状方式组织,在树状信息中的基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值;LDAP 中的信息模式,类似于面向对象的概念,在 LDAP 中每个条目必须属于某个或多个对象类(Object Class) ,每个 Object Class 由多个属性类
9、型组成,每个属性类型有所对应的语法和匹配规则;对象类和属性类型的定义均可以使用继承的概念。每个条目创建时,必须定义所属的对象类,必须提供对象类中的必选属性类型的属性值,在 LDAP 中一个属性类型可以对应多个值。在 LDAP 中把对象类、属性类型、语法和匹配规则统称为 Schema,在 LDAP中有许多系统对象类、属性类型、语法和匹配规则,这些系统 Schema 在 LDAP标准中进行了规定,同时不同的应用领域也定义了自己的 Schema,同时用户在应用时,也可以根据需要自定义 Schema。这有些类似于 XML,除了 XML 标准中的 XML 定义外,每个行业都有自己标准的 DTD 或 DO
10、M 定义,用户也可以自扩展;也如同 XML,在 LDAP 中也鼓励用户尽量使用标准的 Schema,以增强信息的互联互通。在 Schema 中最难理解的是匹配规则,这是 LDAP 中为了加快查询的速度,针对不同的数据类型,可以提供不同的匹配方法,如针对字符串类型的相等、模糊、大于小于均提供自己的匹配规则。2) 命名模型:描述 LDAP 中的数据如何组织 LDAP 中的命名模型,也即 LDAP 中的条目定位方式。在 LDAP 中每个条目均有自己的 DN 和 RDN。DN 是该条目在整个树中的唯一名称标识,RDN 是条目在父节点下的唯一名称标识,如同文件系统中,带路径的文件名就是 DN,文件名就是
11、 RDN。3) 功能模型:描述 LDAP 中的数据操作访问 在 LDAP 中共有四类 10 种操作:查询类操作,如搜索、比较;更新类操作,如添加条目、删除条目、修改条目、修改条目名;认证类操作,如绑定、解绑定;其它操作,如放弃和扩展操作。除了扩展操作,另外 9 种是 LDAP 的标准操作;扩展操作是 LDAP 中为了增加新的功能,提供的一种标准的扩展框架,当前已经成为 LDAP 标准的扩展操作,有修改密码和 StartTLS 扩展,在新的 RFC 标准和草案中正在增加一些新的扩展操作,不同的 LDAP 厂商也均定义了自己的扩展操作。4) 安全模型:描述 LDAP 中的安全机制 LDAP 中的安
12、全模型主要通过身份认证、安全通道和访问控制来实现。身份认证 在 LDAP 中提供三种认证机制,即匿名、基本认证和SASL(Simple Authentication and Secure Layer)认证。匿名认证即不对用户进行认证,该方法仅对完全公开的方式适用;基本认证均是通过用户名和密码进行身份识别,又分为简单密码和摘要密码认证;SASL 认证即 LDAP 提供的在 SSL 和 TLS 安全通道基础上进行的身份认证,包括数字证书的认证。通讯安全在 LDAP 中提供了基于 SSL/TLS 的通讯安全保障。SSL/TLS 是基于PKI 信息安全技术,是目前 Internet 上广泛采用的安全服
13、务。LDAP 通过StartTLS 方式启动 TLS 服务,可以提供通讯中的数据保密性、完整性保护;通过强制客户端证书认证的 TLS 服务,同时可以实现对客户端身份和服务器端身份的双向验证。访问控制虽然 LDAP 目前并无访问控制的标准,但从一些草案中或是事实上LDAP 产品的访问控制情况,我们不难看出:LDAP 访问控制异常的灵活和丰富,在 LDAP 中是基于访问控制策略语句来实现访问控制的,这不同于现有的关系型数据库系统和应用系统,它是通过基于访问控制列表来实现的,无论是基于组模式或角色模式,都摆脱不了这种限制。在 LDAP 中,可以把整个目录、目录的子树、制定条目、特定条目属性集或符合某
14、过滤条件的条目作为控制对象进行授权;可以把特定用户、属于特定组或所有目录用户作为授权主体进行授权;最后,还可以定义对特定位置(例如IP 地址或 DNS 名称)的访问权。5. LDAP 的应用由于 LDAP 所具有的查询效率高、树状的信息管理模式、分布式的部署框架以及灵活而细腻的访问控制,使 LDAP 广泛地应用于基础性、关键性信息的管理,如用户信息、网络资源信息等。LDAP 的应用主要涉及几种类型。信息安全类:数字证书管理、授权管理、单点登录;科学计算类:DCE (Distributed Computing Envirionment,分布式计算环境)、UDDI (Universal Descr
15、iption,Discovery and Integration, 统一描述、发现和集成协议) ;网络资源管理类:MAIL 系统、DNS 系统、网络用户管理、电话号码簿;电子政务资源管理类:内网组织信息服务、电子政务目录体系、人口基础库、法人基础库。6. 目录服务器与关系数据库的比较1) 概念上的区分某种意义上说,LDAP 目录是一种与关系数据库不同的、特殊的数据库,严格意义上说,LDAP 根本不是数据库而是用来访问存储在信息目录(也就是 LDAP目录)中的信息的协议。LDAP 和关系数据库是两种不同层次的概念,后者是存贮方式(同一层次如网格数据库,对象数据库) ,前者是存贮模式和访问协议。L
16、DAP 是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言 SQL 属同一级别。LDAP 最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。2) LDAP 适合存储以下数据 需要在任何平台上都能读取数据 每一个单独的记录项每一天都只有很少的改变 可以把数据保存在平面数据库而不是关系型数据库中,换句话来说,也就是不管什么格式不格式的,把所有东西都存在一个记录中。例如:数据需要从不同的地点读取,但是不需要经常更新:公司员工的电话号码簿和组织结构图、客户的联系信息 、计算机管理需要的信息,包括 NIS映射、email 假名、软件包的配置信息、公用证书和安全密匙,等等。3
17、) LDAP 的优势LDAP 最大的优势是可以在任何计算机平台上,用很容易获得的而且数目不断增加的 LDAP 的客户端程序访问 LDAP 目录。而且也很容易定制应用程序为它加上 LDAP 的支持。LDAP 协议是跨平台的和标准的协议,因此应用程序就不用为 LDAP 目录放在什么样的服务器上操心了。实际上,LDAP 得到了业界的广泛认可,因为它是 Internet 的标准。产商都很愿意在产品中加入对 LDAP 的支持,因为他们根本不用考虑另一端(客户端或服务端)是怎么样的。LDAP 服务器可以是任何一个开发源代码或商用的 LDAP 目录服务器(或者还可能是具有 LDAP界面的关系型数据库) ,因
18、为可以用同样的协议、客户端连接软件包和查询命令与 LDAP 服务器进行交互。4) 关系数据库适合的应用关系数据库的优点是建立在严格的数学概念的基础上,概念单一,实体与实体间的联系都用关系表示,故其数据结构简单、清晰,存取路径对用户透明,故有更高的数据独立性和更好的安全保密性。缺点是查询效率不如非关系型数据库,故必须对查询进行优化,增加了开发数据库管理系统的难度。具体来说关系数据库的优缺点如下:(1)关系数据库系统的优点灵活性和建库的简单性:从软件开发的前景来看,用户与关系数据库编程之间的接口是灵活与友好的。目前在多数 RDDMS 产品中使用标准查询语言SQL,允许用户几乎毫无差别地从一个产品到
19、另一个产品存取信息。与关系数据库接口的应用软件具有相似的程序访问机制,提供大量标准的数据存取方法。结构简单:从数据建模的前景看,关系数据库具有相当简单的结构(元组) ,可为用户或程序提供多个复杂的视图。数据库设计和规范化过程也简单易行和易于理解。由于关系数据库的强有力的、多方面的功能,已经有效地支持许多数据库纳应用。(2)关系数据库系统的缺点支持长事务能力差;由于 RDBMS 记录锁机制的颗粒度限制,对于支持多种记录类型的大段数据的登记和检查来说,简单的记录级的锁机制是不够的,但基于键值关系的较复杂的锁机制来说却很难推广也难以实现。环境应变能力差:在要求系统频繁改变的环境下,关系系统的成本高且
20、修改困难。在工程应用中支持“ 模式演变“ 的功能是很重要的,而 RDBMS 不容易支持这种功能。另外,关系数据库和编程语言所提供的数据类型的不一致,使得从一个环境转换到另一个环境时需要多至 30的附加代码。由于数据结构简单、清晰,存取路径对用户透明,故有更高的数据独立性和更好的安全保密性的优点,关系数据库得到了广泛的应用,广泛应用于用于人事档案管理、商业管理、仓库管理等数据库管理系统。因为这些系统所需的数据结构以及实体之间的联系比较单一。关系型数据库是可以代替目录服务器的,只要做好数据的层次查询也可以达到目录数据的标准。7. 目录服务器的厂商厂商 产品 描述微软 MS Active Directory 收费Domino LDAP 收费Sun 公司 Sun One Directory Server收费OpenLDAP 免费(开源)IBM DSS(Directory and security server)收费Novell (NDS)Netscape Directory Server收费