LDAP技术报告一、目录和目录服务LDAP(LightweightDirectoryAccessProtocol)轻型目录访问协议是目录访问协议的一种。因此下面首先介绍什么是目录和目录服务。目录是一个以一定规则排列的对象的属性集合,是一个存储着关于对象各种属性的特殊数据库,这些属性可以供访问和管理对象时使用,类似电话簿和图书馆卡片分类系统。这里,我们所谈的目录服务是指网络目录服务。目录服务是指一个存储着用于访问、管理或配置网络资源信息的特殊数据库(alsocalleddatarepository),它把网络环境中的各种资源都作为目录信息,在目录树结构中分层存储,对这些信息可以存储、访问、管理并使用。网络中的这些资源包括用户、各个应用系统、硬件设备、网络设备、数据、信息等。目录服务是为有效的集成管理网络目录中的信息提供服务,是支持网络系统的重要底层基础技术之一。目录服务将分布式系统中的用户、资源和组成分布式系统的其它对象统一的组织起来,提供一个单一的逻辑视图,允许用户和应用透明地访问网络上的资源。一个由目录服务支持的网络系统是一个集成的、网络化的、统一的系统,而不是各个独立功能部分的简单聚合。在目录服务系统中对象可以根据名字或功能、属性访问,而不是根据机器地址、文件服务器名字和mail地址等访问。在目录服务的基础上开发的应用,易于使用、功能增强和易于管理,目录信息的共享为应用的开发提供了方便。下一代分布式网络的信息模型和模式是一种基于目录的,当我们进入网络时,是登录到一个基于目录的网络中,而不是登录到某个机器上。目录服务可以存储信息种类:1、用户帐户信息(登入名、口令、权限)2、用户个人信息(电话号码、地址、雇员ID号)3、外围设备配置信息(打印机、调制借调器、传真)4、应用程序配置信息5、安全信息6、网络基础设施配置信息(路由器、代理服务器、INTERNET访问设置)7、人们可以想得到的,网络目录中都可以存储这些信息集中在一个标准数据库中,就可以有多种不同的使用方法。其中,最普通的是供系统管理员用于网络访问控制和网络资源访问控制。目录将成为对许多网络活动进行集中控制的地方。控制的例子:1、用户登入进入一个网络,系统进行认证和权限判定;2、用户进入网络后,访问网络中的资源,系统向目录服务查询该用户是否具有使用该资源的权限,并返回所请求资源的物理地址。3、个人用户可以使用目录服务存储个人设置信息,并可以对其所有环境进行集中存储和控制。4、随着目录服务技术的成熟,人们可以使用该技术通过一些网络设备监视和控制网络传输情况。目录服务的基本功能:资源信息的目录式表示、分布存储、资源定位和查找、用户的统一认证、系统资源的统一授权、系统资源信息的共享、系统资源的单点统一管理、安全传输的保证、资源的统一监控等。目录服务的主要优点:1、网络管理工作大大减轻,包括管理网络上的各个应用;2、网络的集中管理点;3、访问用户信息的集中控制点;4、存储在其它条件下很难处理的管理信息5、系统资源信息的利用率高、管理的可扩展性好简单地说,目录的发展经历了书面目录(电话目录、医士列表)——基于计算机的目录(PIM,不易共享、必须访问到响应的软件和计算机)——网络目录(公共的、共享的、统一的)。传统的目录是计算机或网络基础结目录的一个构件,它向其它应用程序提供服务,但没有提供集成管理的机制,网络上的计算和服务需要一种公共的、分布式的目录,能够跨平台地对应用程序和用户提供集中、统一的服务。目录服务将使网络上的系统资源管理朝着单一的、全网络的目标发展,并能够让用户、管理员以更容易的方式来管理网络环境。目录服务作为一种工具来减少大型网络的管理负担,提供了集中的单点管理和适应复杂环境所必须的灵活性,减轻了非目录服务系统中存在的冗余管理。通过网络资源逻辑接口,目录服务(ADS)减少了人们为了利用网络功能而必须对网络掌握的程度。也就是说,普通用户只需要很少的网络知识,就可以通过复杂网络访问和使用资源。用户不需要再了解资源的物理分布,访问本地打印机的方法和访问远程网络资源的方法相同。目录服务(ADS)提供了逻辑表示与资源的网络上的物理位置的连接,从用户的角度看,这可能是转移到基于目录的网络操作系统具有的最大优点。)目录服务和数据库的区别:读多于写一般不支持事务处理信息访问方式不同(一个是SQL、一个是LDAP的API)目录中的信息一般不要求严格的一致性传统的数据库是平面的,无法表示资源之间及资源使用控制的复杂逻辑关系而远远不能满足当前资源信息管理的各种要求。目录服务与DNS系统的相同之处和不同之处相同之处:分布存储树型层次结构容错不同之处:DNS的功能和目录服务不同,DNS功能单一,本质上是将主机名解析成IP地址。目录服务是可以为多个应用提供网络资源的信息存储和管理,具有广泛的应用特性;DNS是以一系列文本文件为基础,是一种纯文本式的数据库,无法进行扩展,适应其它功能的要求;与分布式文件系统的相同在于采用了准树型层次结构,具有一定的授权功能,区别在于:目录服务表示资源的各种属性信息,可为各种应用提供服务,文件不能表示;目录服务有很强的逻辑表示和分类,文件的组织逻辑性单一,主要按存储位置;文件系统的认证功能较差独立性强目录服务的应用举例C4ISR系统:由多个大的子系统构成,管理问题更为复杂和严重新的应用:电子商务(IBM)、操作系统(WINDOWS2000)网络的监控管理会议系统和PIM搜索功能太多的应用——基于目录的应用原有应用的资源管理的重新开发二、LDAP协议的特点X.500协议是为了便于建立全局、分布式的目录信息而设计的一套协议。它是一种C---S(Client—Server)结构的应用协议,支持用户通过网络访问和维护资源信息,另外还具有几个突出的特点:支持分布式的目录信息维护,所以每一个运行X.500的服务器都只需负责自己所管辖的资源信息,只需在本地就可完成信息的更新;提供强大查询能力,可以让用户随心所欲的设计查询方式;全局的信息标示,通过这种标示可以唯一的定位信息位置,获取内容;结构化的信息模式,支持开发者的本地扩展;遵循统一的标准,所以可以通过标准的方式访问任何一个X.500服务器,获取信息;X.500协议中包含了这诸多的强大功能,可以说在很大的程度上满足了用户和开发者的要求,但是在用户和开发制的使用过程中却逐渐暴露出其许多的不足之处,阻碍了它的应用和推广,主要集中在使用方式和性能开销上这两个方面,由于X.500是在OSI协议栈上实现的,虽然X.500提供了强大的信息查询功能,但是协议所要求的访问格式却十分复杂,往往难以掌握;其次在运行X.500服务器时对系统的开销要求较高。为了兼顾保留协议的优点和克服这些不尽人意的地方,推出了由X.500目录服务协议延伸发展而来的轻型目录访问协议(LightweightDrectoryAccessProtocol,简称LDAP)。LDAP协议继承了X.500的90%左右的功能,同时兼容所有使用X.500协议建立的服务端数据库,避免了重复开发的浪费;在运行开销上却只是X.500的10%。正是由于LDAP具有巨大的优越性,它从一开始仅仅是作为X.500客户层的另一种实现方式,到现在在许多应用中完全替代了X.500协议,成为一个完整实用的应用开发协议。LDAP在以下四个方面对X.500进行了简化:传输:LDAP直接运行在TCP上,避免了OSI多层通信的高层开销;功能:LDAP简化了X.500的功能,抛弃了较少用到的功能和冗余的操作;数据表示:X.500的数据表示结构复杂,LDAP采用简单的字符串对数据进行表示;编码:LDAP用于网络传输的编码规则比X.500的编码规则更加简单。总到来说,基于LDAP的目录服务有以下特点。目的是存储网络资源的信息结构化的信息框架(面向对象的信息存储方法),采用树型层次式结构表示在系统中的单点集中(不指物理位置)管理资源,可实现单一登入点读多于写基于TCP协议Client/Server逻辑结构标准的访问协议LDAP强大的搜索功能,允许用户组织复杂的查询要求维护的分散性(信息可分布存储,具有集中式数据库无可比拟的优越性)可全球唯一的命名动态添加和修改信息容错功能自动更新和维护存储的信息方便的备份和恢复功能安全访问和信息传输的安全易对资源进行授权管理三、LDAP协议的内容LDAP定义了四种基本模型:信息模型说明了LDAP目录中可以存储哪些信息;命名模型说明了如何组织和引用LDAP目录中的信息;功能模型说明了LDAP目录中的信息处理,特别是如何访问和更新信息;安全模型说明如何保护LDAP目录中的信息不受非授权访问和修改。信息模型LDAP的信息模型是以模式(Schema)为基础的,以项目(Entry)为核心的。模式由若干项目组成,项目是描述客观实体的基本单位,项目(如图3)由描述客观实体具体信息的一组属性(Attribute)构成。属性(如图3)只能有一种类型(Type),可以有一个或多个值(Value)。属性的类型具体说明属性值可以存储哪些信息,以及这些信息的行为特性。例如,属性cn的类型是caseIgnoreString,它意味着属性值是按照词典排序的字符串,并且在比较时忽略大小写,如BEIJING和Beijing是相同的;属性tele的类型是telephoneNumber,它具有caseIgnoreString的全部特性,另外在比较时忽略空格和破折号,如0731-4573670和07314573670是相同的。每个项目都有一个属性objectClass,用于说明项目的类型,以及项目中的必选属性和可选属性。属性objectClass的取值可以是一个或多个,其中必须有一个用于说明项目的基本结构的结构对象类(Structuralobjectclass),结构对象类不能轻易改变;除此之外,还可以有若干个对项目结构进行辅助说明的辅助对象类(Auxiliaryobjectclass),在访问控制允许的范围内可以新增或删除辅助对象类。命名模型在LDAP目录中,项目是按照树形结构组织的,根据项目在树形结构中的位置对项目进行命名,这样的命名通常称为标识(Distinguishedname),简称DN。DN由若干元素构成,每个元素称为相对标识(Relativedistinguishedname),简称RDN。RDN由项目的一个或多个属性构成。LDAP的命名模型(如图4)与我们熟悉的文件系统有很多相似之处,RDN与文件系统中的文件名很相似,DN与文件的绝对路径名很相似。另外,与文件系统一样,兄弟项目(即,具有相同父项目的子项目)必然具有不同的RDN。LDAP的命名模型与文件系统之间的区别主要有:在LDAP目录中,位于叶节点和非叶节点的项目都拥有各自的属性;在文件系统中,只有位于叶节点的文件拥有较丰富的内容,而位于非叶节点的目录的内容相对简单。在LDAP目录中,DN中各元素的排序是从叶到根;在文件系统中,文件绝对路径名中各元素的排序是从根到叶。在LDAP目录中,DN中各元素之间的分隔符是“,”;在文件系统中,文件绝对路径名中各元素之间的分隔符是“/”或“\”。在LDAP目录中,允许超越树形结构的别名项目(Aliasentry),它指向其它项目。功能模型LDAP的功能模型涉及以下三个方面:询问(Interrogation)LDAP在信息询问方面主要定义了查找(Search)和比较(Compare)两个操作。在查找操作中,根据选取标准在指定范围内选择项目,这个选取标准通常称作查找过滤器(Searchfilter),并且可以规定一组需要返回的属性。另外,还可以规定查找结果的大小和客户端等待结果的时间。比较操作主要是判断指定项目是否包含指定属性(包括类型和值)。更新(Update)LDAP在信息更新方面定义了新增(Add)、删除(Delete)、修改(Modify)和修改RDN(ModifyRDN)等四个操作。新增操作主