LDAP协议研究及.doc_第1页
LDAP协议研究及.doc_第2页
LDAP协议研究及.doc_第3页
LDAP协议研究及.doc_第4页
LDAP协议研究及.doc_第5页
免费预览已结束,剩余48页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LDAP协议研究及校园网统一认证系统下的目录服务设计及web管理第一章 引言11 项目背景对于一些计算机资源,只有经过授权的合法用户才能访问,而如何正确鉴别用户的真实身份是问题的关键。用户认证,也称为用户鉴别,就是用户向服务系统以一种安全的方式提交自己的身份证明,由服务系统确认用户的身份是否真实。在传统的校园网络应用环境下,存在网络服务的多样性,以及资源的分散性等特点。以交大为例,就建立了多个信息系统及各种网络资源,为学校领导、各部门及全校教师、学生提供多种服务,如ftp、mail服务,教务管理系统,选课系统,人事管理系统等等。今后还会不断增加新的应用系统,用户数量也会不断增加。这些服务器分散在校园各地。这就带来一些问题。一是上网的信息资源越多,受黑客攻击的可能性越大(尤其是一些敏感数据);二是用户在每一个服务器上都有其帐户和口令,无论每人的多个帐户和口令是否相同,当面对多个系统时都要输入相应的帐号、口令等信息。 这样做不仅繁琐,不利于用户的高效管理,更造成应用系统数据库重复开发带来的网络资源和人力浪费,同时还会带来信息安全的诸多问题。因此,信息系统急需有一个统一的、具有较高安全控制的身份验证系统,以减少数据冗余、保证数据安全和提高管理质量,便利用户操作。开发本系统的目的之一就是要解决不同的网络应用系统用户名和口令不统一的问题,期望提供一种方便、安全的口令认证方法,理想的情况是所有的应用服务器使用同一套用户数据库,实现统一认证,用户只需使用同一个帐户/口令,就可对所有服务器进行权限以内的访问。目录服务是实现该理想的途径。如果各种应用系统都遵从同一种目录访问标准,能与同一目录服务器交互,则可将其认帐户、口令、权限包括资料等信息保管于该目录服务器,从而实现统一认证。12 目录121 什么是目录 提起目录,人们会想起unix的树状目录,目录中包含文件和子目录,目录和文件的安全由ACL(Access Control List)控制。其实unix的树状目录就是这里说的目录一种,文件系统中的全称路径就是后文提到的DN名(Distinguished Name),相对路径名对应的就是RDN(Relative Distinguished Name ) 。在Uinx系统中,所有的资源都是以文件的形式来管理的,例如打印机、串口、用户和网卡等等。如果增添设备,那么一定也会以文件的形式来管理。这就给了我们一种启示,把unix文件系统的目录进行推广,将计算机网络中的资源以一致的目录形式来管理,作为一种网络协议来规范目录访问协议。 目录可以理解为一种协议,也可认为是一种特殊的数据库,因为目录服务器往往挂接了后台数据库,它保存数据供客户机查询,这与数据库的数据存取功能是相似的,它的特殊之处,在后文分析LDAP协议时可以看到。122 目录服务的用途简单的说,目录是用于保存资源信息的。很常见的一种方式就是保存用户帐户、口令用于验证,而且是统一认证的主要解决途径。目录服务还常用于保存单位、部门、个人的公共信息,如电话号码、电子邮件、通信地址等,以及保存各种软硬件资源的信息,如应用服务器的IP、端口号、位置等。13 目录访问协议131 x.500 DAP X.500是由ITU推荐的一个标准,于1988年发布。它全面描述了目录服务的工作模型,包括目录服务器的目录结构、命名方法、搜索机制以及用于客户机与访问器通信的协议DAP(Directory Access Protocal)。然而在实际应用的过程中,X.500存在不少障碍。X.500目录是多用途的、特点丰富的,但也是很复杂的实体。DAP这种应用层协议是严格遵照复杂的OSI七层协议模型制定的,不仅使操作具有较高的系统开销,而且因为要得到其下六层协议的全面支持,因此在许多小系统上无法使用。而TCP/IP协议的普及使得DAP协议越来越不适应需要,毕竟TCP/IP对于internet访问是必需的。在这种情况下,LDAP协议应运而生,它是一个较为简单的、消耗更少资源的协议。132 LDAPLDAP由密歇根大学开发,最初是作为一个简化的访问X.500目录服务的协议提出的;然而经过发展,LDAP不仅成为通过TCP/IP网络访问目录服务的事实标准,而且也成了一个和操作系统独立的目录。 14 LDAP 目录141 LDAP 目录的优势和特性LDAP目录具有以下特性:开放性、分布性、可伸缩性和跨平台性易于定制 可以方便地提供不同的LDAP目录服务,其策略很容易实现。快速搜索 LDAP目录有很强地过滤器功能,并且搜索速度很快。安全特性 管理员可以根据需要使用ACL对目录强制使用安全特性,以便保护目录信息不被非法获取和篡改。平台和开放性 LDAP是跨平台和标准的协议,应用程序无需考虑LDAP目录放在何种服务器上。事实上,LDAP 得到了业界的广泛认可,众多产品都加入了对LDAP的支持。可以在任何计算机平台上,用很容易获得的而且数目不断增加的LDAP的客户端程序访问LDAP目录。分布特性 通过复制或参考指针(referral),目录可放在不同的网络主机上,实现分布式数据库。复制特性 提高目录的可靠性,通过将目录复制到本地服务器,可提高用户请求相应速度,最后,复制也是可实现一种安全策略。 142 LDAP 的应用场合LDAP对于存储这样的信息最为有用,即数据需要从不同的地点读取,但是不需要经常更新。 例如,这些信息存储在LDAP目录中是十分有效的: l 公司员工的电话号码簿和组织结构图 l 客户的联系信息 l 计算机管理需要的信息l 软件包的配置信息l 公用证书和安全密匙 大多数的LDAP服务器都为读密集型的操作如检索、浏览等进行了专门的优化。因此,当从LDAP服务器中读取数据的时候会比从专门为OLTP优化的关系型数据库中读取数据快一个数量级。也是因为专门为读的性能进行优化,大多数的LDAP目录服务器并不适合存储需要需要经常改变的数据。例如,用LDAP服务器来存储帐号是一个不错的选择,但是它显然不适合作为电子商务站点的数据库服务器。 143 为什么是LDAP?综合以上两节所述,出于资源统一管理的需要,以及认证中查询操作所占的比重的考虑,在统一认证系统中采用LDAP目录作为认证信息服务器就成为必然的选择。 5 本文内容 本文对LDAP协议作了较为深入的研究,包括协议模型、数据模型、应用模型,探讨了LDAP目录管理当中复制、安全性、配置文件等重要概念,详细分析了LDAP目录管理中关于模式扩展、访问控制的应用方法。论述了校园网统一认证体系的框架和实现思想以及目录服务在当中的作用,提出目录服务器DIT的初步设计和要解决的问题,并对于安全认证做了初步设计。最后实现了一个简单的基于web的目录管理系统。第二章 LDAP协议综述 21 LDAP协议模型 LDAP协议采用客户机/服务器模型。客户机构造一个LDAP协议请求,LDAP服务器必须分配一个端口来监听客户端请求,通过TCP/IP传递给LDAP服务器,在服务器执行完请求的操作后,把包含结果或者错误信息的相应回传给客户机。LDAP协议请求的PDU是一个LDAPMessage结构,响应的PDU是一个LDAPResult结构。LDAP的PDU都直接映射到TCP的字节流在网上传输。 LDAP客户和LDAP服务器的一般交互过程如下: 图21 LDAP 会话1)客户端与LDAP服务器建立连接,要求客户端指定服务器的主机名或IP地址和伺服端口号。服务器将返回一个连接句柄,它指向了这次连接的所有信息。2)客户端与服务器建立一个会话(session),称为绑定。客户端提供用户名和口令进行认证,也可以建立一个具有缺省访问权限的匿名会话,还可以建立一个使用加密的安全会话。3)客户端发送操作请求,服务器执行操作。4)客户端结束所有请求后,关闭和服务器的会话,称为解除绑定。5)断开与服务器的连接。LDAP客户端的请求可以是同步的,也可以是异步的。在LDAPMessage结构中的messgeID整型变量唯一的标识一个请求,因此服务器通过messageID可以识别客户机发出的请求并正确返回该请求的响应,这是异步操作实现的原理。22 数据模型221条目的构成目录中存放数据的基本单位是条目。条目代表了真实世界中的对象,例如人、服务器、组织等等,是具有区别名DN(Distinguished Name)的属性(Attribute)集合,每个属性由一个类型(Type)和多个值(Values)构成,条目的逻辑结构如图22所示图22 条目的逻辑结构类型通常是容易记忆的名称,比如“cn”是通用名称(common name),或者“mail”是电子邮件地址。条目的值的语法取决于属性类型。比如,cn属性可能具有一个值“Jia Chen”。一个mail属性可能包含值“”。一个jpegphoto属性可能包含一幅JPEG(二进制)格式的图片。另外,LDAP通过使用一个特殊的,叫做objectClass的属性来允许您控制哪一个属性必须出现或者允许出现在一个条目中。objectClass属性的值决定了该条目必须遵守的模式规则。一般来说,大多数属性的取值对于服务器并无意义,而由客户去解释和使用,但有一类属性叫操作属性(Operational Attribute),它们往往由服务器自动生产和修改,用户无法修改。222 DIT的组织和命名在LDAP中所有的条目以目录信息树(Directory Information Tree,DIT)组织。图2-3表示了了一个目录树,它由位于不同层次的节点组成。LDAP不允许悬挂条目(即没有父节点的条目)存在于DIT中。在创建一个DIT之前,必须先定义根节点,即基准DN,也称为DSE(DSA-specific Entry 目录服务代理条目),它描述了LDAP服务器自身的信息。目录对象必须有名字以便无歧义的由客户端引用或识别,相对区别名RDN和可区别名DN是两种识别目录对象的主要方法。 图23RDN由一个称为命名属性的项目属性构成,它在父节点下的子树范围内唯一的识别每一个项目。每一个对象类都定义了一组属性充当命名属性,但在一个对象类的任何实例中只能由一个命名属性。要在整个目录层次中唯一的识别一个目录对象,就必须使用DN。每一个LDAP记录项的DN是由两个部分组成的:相对DN(RDN)和记录在LDAP目录中的位置。RDN是DN中与目录树的结构无关的部分。可以看出,DN的定义是递归的,目录对象的DN就是其RDN与目录对象所在父条目DN的简单连接。23 LDAP模式schema及其扩展(重点难点)2.3.1 schema概述LDAP中关于属性、对象类文法和匹配规则等的规定构成所谓schema。模式信息在目录中通过objectclass为subschema的条目来表示,通常在DIT中占据一个独立的分支,可以对模式信息进行同其他目录对象一样的搜索操作。在LDAP中,schema居于核心地位,模式管理和扩展也是最复杂和具有挑战性的工作。Openldap随软件发布了一组模式定义,要使用任何一个模式文件,只需在slapd.conf文件中的全局定义部分包含所需要的文件。如:include /usr/local/etc/openldap/schema/core.schema2.3.2 模式扩展在实际应用中,需要设计目录模式描述将要存储在目录中的数据类型。如果有的数据无法用服务器支持的标准模式来表示,这就需要对模式进行扩展和自定义。下面是定义一个新的模式的4个步骤:l 获取和分配对象标识符;l 命名属性类型和对象类;l 创建本地模式文件;l 定义对象类和属性类型。 1)获取和分配对象标识符每个LDAP对象类和属性必须分配一个唯一的名字和对象标识符。在自定义模式时,每个公司或组织需要一个唯一的OID,一个OID可以满足所有的模式需要,因为可以通过创建新的分支来满足所有的OID需要。获取和分配对象标识符的过程如下:从IANA为自己的组织申请OID;创建一个登记表来维护对此OID的分配;为模式元素提供OID创建分支。例如某组织被赋予一个OID1.1,可以按照俯下所示的方法扩展树:Table 2.1: Example OID hierarchyOID Assignment 1.1 Organizations OID 1.1.1 SNMP Elements 1.1.2 LDAP Elements AttributeTypes .1 myAttribute ObjectClasses .1 myObjectClass 2) 命名属性类型和对象类为模式元素分配一个唯一的OID之外,还应该为每个模式元素提供一个具有描述性的名字,自定义模式元素的名字不能和标准模式元素冲突,解决办法是为每个自定义的模式元素添加前缀。在RFC2377中有关于模式元素命名方案的详细信息。3) 创建本地模式文件虽然在配置文件指令中的objectClass和attributeTypes可以被用来定义目录中的模式规则,但实际应用中创建一个文件来包含对于定制的模式元素的定义可能是一种更好的选择。可以在openldap的安装目录下的schema目录中创建一个本地文件,然后包含在slapd.conf文件中。4) 定义对象类和属性类型对象类和属性类型定义的正式语法在RFC2252中。下面是一个属性类型的定义:attributetype ( .1 NAME xjtuUniqueName DESC Xjtu Unique Name EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX .4.1.14.15 SINGLE-VALUE ) 其中,.1是属性类型的OID,NAME后是属性类型的名称,DESC后是属性类型的说明性的描述,EQUALITY和SUBSTR定义了属性支持的匹配规则。SYNTAX后是属性的属性语法,由一个OID描述。SINGLE-VALUE指明该属性为单值,若要允许该属性为多值属性,SINGLE-VALUE应替换为COLLECTIVE或为空。 下面是一个对象类的定义objectclass ( .2 NAME xjtuPerson DESC xjtu person objectclass SUP inetOrgPerson MUST ( xjtuUniqueName $ givenName ) MAY (class ) 其中,.2是对象类的名字,NAME后是对象的名字,DESC后的字符串是对象类的描述,SUP后的inetOrgPerson是xjtuPerson对象类的超类或父类,表示xjtuPeron从inetorgPerson类继承所有的可选属性和必须属性,MAY后面是xjtuPerson新添加的可选属性,属性之间用$分隔。MUST指令制定新对象类的必须属性。 对象类可以按照类似面向对象的方式进行组织,通过继承和包含机制可以利用标准模式中的对象类定义,不需要从头开始构造自己的对象类层次。扩展模式的原则l 尽可能重用存在的模式元素l 在定义对象类时,保持必须属性的个数最小化l 对象类和属性定义的目的应该明确避免重复l 尽量保持模式简单l 不要修改已经存在的对象类或属性定义不同目录服务器对扩展模式的支持微软的活动目录(Active Directory)在域控制器允许时允许动态扩展模式,而openldap不支持动态模式扩展,无法在运行时扩展模式,只能通过修改服务器的配置文件实现。24 LDAP 目录访问控制LDAP提供了丰富的不同层次的访问控制,对条目的访问由服务器端存取配置文件指令的控制。以openldap软件为例,一个存取控制行的通常格式如下: := access to by + := * | dn.= filter= attrs= := regex | base | one | subtree | children := | , := | entry | children := * | anonymous | users | self | dn.= dnattr= group/.= peername.= sockname.= domain.= sockurl.= set= aci= := regex | exact | base | one | subtree | children := regex | exact := self| := none | auth | compare | search | read | write := =|+|-w|r|s|c|x+ := stop | continue | break其中,部分选择了该存取控制应用的条目或者属性。部分说明了哪一个身份被赋予访问权限,部分说明了赋予什么样的访问权限。可以指定多个 3元组,以允许为相同的条目和属性赋予多个身份不同的访问权限。下面详细说明各个部分的定义方法。241 控制对于what的访问一个存取控制说明的部分决定了存取控制规则应用的条目和属性。条目可以通过两种方式选择:l 通过匹配条目的DN的正则表达式:dn=DN的模式说明应该规范到RFC2253中限制的DN格式;l 通过匹配条目中的某些属性的过滤器来选择条目:filter=是一个表示LDAP搜索过滤的字符串,在RFC2254中描述。条目中的属性可以通过一个用逗号分隔的属性列表来选择:attrs=对于条目本身的访问控制必须使用特殊的属性名称“entry”来赋予。而且不能仅仅给一个属性赋予权限,必须同时设定条目本身的访问权限。因为要访问该条目的属性,能够访问该条目是必须的。242赋予Who访问权限部分指明了被赋予访问权限的身份。表2.2说明了身份说明选项:Table2.2:Access Entity SpecifiersSpecifier Entities * All, including anonymous and authenticated users anonymous Anonymous (non-authenticated) users users Authenticated users self User associated with target entry dn= Users matching regular expression DN说明选项使用一个正则表达式来匹配当前身份的DN:dn=LDAP还提供了更灵活的控制方式。例如:可以通过一个匹配限制客户端的域名:domain=或者通过一个条目,该条目出现在应用访问权限控制的条目中具有一个DN值的属性中:dnattr=dnattr指令被用来给予访问一个条目的权限,并且访问者的DN出现该条目的一个具有DN类型的值中,例如,可以将访问一个资源条目的权限给予所有那些列出在该条目的owner属性中的人。243赋予Access访问权限可以赋予的的类型可以是如下几种:Table 2.3:Access LevelsLevel Privileges Description none no access auth =x needed to bind compare =cx needed to compare search =scx needed to apply search filters read =rscx needed to read search results write =wrscx needed to modify/rename 每一个级别隐含了更低的级别。因此,给予某人写一个条目的权限同时给了读,搜索,比较和认证的权限。当然,也可以使用权限说明来赋予特定的权限。244 存取控制计算当计算某个请求者是否应该被给予访问一个条目或者属性的权限的时候,slapd(openldap软件是以一个名叫slapd的daemon进程来运行的,因此slapd等义于一个LDAP服务器)将条目或者属性和在配置文件中给出的条目或者属性相比较。对于每一个条目,包含该条目的数据库所提供的存取控制被首先应用,然后是全局存取控制指令。在这种优先级的情况下,存取控制按照它们在配置文件中出现的顺序被检查。Slapd在找到第一个匹配该条目或者属性的选择器时停止搜索。相关的存取控制指令就是slapd将要用来计算存取控制的指令。下一步,slapd将请求访问的身份和上面找到的存取控制指令的相比较,它在找到第一个匹配请求者身份的选择器之后停止。这决定了请求访问者对于条目或者属性所具有的访问权限。最后,slapd将所选的指令中赋予的权限和客户端请求的权限相比较。如果超过或者等于客户端请求的权限,则赋予该用户权限,否则拒绝访问。存取控制指令的计算顺序使得它们在配置文件中的顺序非常重要。如果一个存取控制指令在所选择的条目中比另外一个更加特定(选择的范围更小),它应该首先出现在配置文件中。同样,如果一个选择器比另外一个更加特定,它也应该首先出现在存取控制指令中。25 LDAP服务器应用模型 LDAP服务器的可伸缩性是通过配置文件实现的,不管使用何种策略,只需更改配置文件即可实现。具体说来,可伸缩性和分布性考它的两个功能实现,一个是使用referal指针,一个是使用复制功能。本节提出了不同的LDAP应用模型,并分析了LDAP复制的实现原理。 251 独立LDAP服务器 LDAP客户端 1请求 LDAP 服务器 2响应 图2.3这是最简单的一种应用,如果用户只需要提供本地的目录服务,并且无意与其它的LDAP服务器交换信息,则可利用本策略。但这种设计只适合LDAP服务器信息量不大且LDAP客户端数量或请求少的情况。当然,如果需求改变,可以方便的升级到其它的配置。252带有参考指针的独立LDAP服务器图2.4带参考指针的模型如图2.4所示。对于在本地域之外的请求,LDAP服务器返回一个参考指针,然后客户端使用这个返回值访问指针指向的LDAP服务器。需要注意的情况是,不要发生参考指针的循环传递,有两种情况:1)AB ,BA;2)A B,BC;CA。如果本地目录服务是作为一个全局服务的一部分,或者用户需要实现信息的地理分布,减轻本地LDAP服务器的负荷可采用此模型。253 可复制的LDAP独立服务器图2.5图2.5表示了一主一从(实际亦可多从)LDAP服务器的部署情况。当客户端么更新条目时,它首先访问从LDAP服务器,而从服务器只提供查询服务,因此拒绝该次更新请求,并返回指向主LDAP服务器的参考指针。客户端然后在主服务器上完成更新请求。Slurpd根据复制日志和安全策略,把更新条目中符合安全策略的信息复制到从LDAP服务器上,以达到同步的目的。254 分布式LDAP服务器使用LDAP的复制功能和referral参考指针,可以方便的部署分布式LDAP服务器。分布式LDAP服务器适合于信息量很大,并有数量众多的客户端的应用场合,这时会建立起一个LDAP服务器群。当然这需要详细的规划,不仅仅是一个技术问题。由于兼容性问题,应避免同时部署LDAP V2和LDAP V3服务器,因为referral指针是LDAP V3版加入的新特性。255 LDAP复制机制Slurpd是Standalone LDAP Updat Replication Daemom的缩写,它是一个Daemon进程,与slapd进程运行于同一台主机上,主要功能是把“主LDAP服务器”的数据库的变化传播(这里使用“传播”而不是“复制”是由于安全策略的原因,可能不是一模一样的复制)到另一个LDAP服务器数据库。系统启动的时,slurpd读取slapd产生的复制日志文件,通过LDAP协议把主slapd数据库的变化写道另一个LDAP数据库上,从而达到传播变化的目的。处理完复制日志文件后,slurpd进程就进入sleep状态,然后系统周期性的唤醒它,检查复制日志文件的时间戳,判断是否有新变化可以传播。当slurpd检查到有新的变化要传播时,就缩住复制日志文件,拷贝一个复制日志文件到它自己的私有空间中,然后释放复制日志文件锁。最后创建子进程把复制日志文件的变化通过LDAP协议写到其他的slapd数据库中。26 LDAP安全性 LDAP安全性时LDAP V3中新的支持特性。在v2中没有提供任何安全性,但可以利用SSL进行传输层加密。安全性涉及到许多方面,如认证,授权和加密等,LDAP通过多种方法来实现各种安全性。261 认证方法认证可以用于防止对目录信息的非授权访问。LDAP V3提供了三种认证方法:匿名认证;简单认证;简单认证和安全层(SASL)。匿名认证时最简单的认证方法,只能用于无须特殊访问控制权限的场合。当执行绑定操作时,不需要指定绑定DN和口令,LDAP服务器假定这是一个匿名用户会话,并授予何时的访问权限。客户端使用简单认证方法绑定到LDAP服务器时,必须提供DN和相应的明文口令标识自己,LDAP在目录中查找相应的DN和口令,如果匹配,客户就通过认证,并具有相应的访问控制权限。在一个不安全的网络传输中,明文口令可以很容易的获取,因此简单认证的安全性很差,在允许更新操作的目录服务器中,不应使用简单认证方法。262 简单认证和安全层(SASLHE)SASL为面向连接的协议定义了一个添加附加认证体制的方法,她在协议和认证系统之间充当中介的角色。RFC2222中详细的阐述了SASL的工作机制。图26说明了SASL的机制 图2.6 SASL机制 运行基本的SASL认证需要几个步骤。首先是配置slapd服务器环境,让它可以和客户端的程序使用您站点的安全系统进行通信。这通常包括设置一个服务密钥,一个公用密钥,或者其他形式的密钥。其次,由于LDAP服务器使用SASL库调用来获得已认证用户的用户名,该用户名是在认证机制的名字空间中,不是在LDAP空间中,因此,服务器需要将认证身份映射到LDAP的DN。这可以通过在slapd.conf(5)文件中增加一个或者多个saslRegexp指令来实现:saslRegexp SASL提供了一个特性,叫做授权。它允许一个认证过的用户请求作为另外一个用户执行操作。该过程在用户得到一个认证DN之后执行,并且,包括向服务器发送一个授权身份服务器将做出判断,允许或者拒绝授权发生。如果允许,该用户的LDAP连接切换到具有一个从授权身份中派生的绑定DN,LDAP会话以新的授权DN的访问权限继续。该服务当一个实体需要以其他用户的身份执行操作时是非常有用的。比如,用户可能被定向到一个Web页面来修改他们在LDAP条目中的个人信息。用户向Web服务器进行认证来建立他们的身份。但是,Web服务器CGI不能作为该用户向LDAP服务器进行认证,以便修改。作为替代,Web服务器可以向LDAP服务器作为一个服务身份进行认证。比如:cn=WebUpdate,dc=example,dc=com然后,它将授权作为该用户的DN。授权之后,只要slapd服务器可以通过ACL, CGI将用户的LDAP条目做出改变。在连接的另外一端,是用户自己。用户本来可以以自己的身份直接连接到LDAP服务器,但是,这将需要用户具有更多有关LDAP客户端的知识。而Web页面可以提供了一个更简单的格式。LDAP管理员可以将两个属性放到LDAP条目中来允许授权:saslAuthzTo,vsaslAuthzFrom,两个属性都可以是多值的。第一个称为源规则。它被放到个人认证DN中,来说明该个人可以被允许切换到的授权DN。第二个被称为目的规则,它被放到个人一个授权DN条目中,来说明要切换到该授权DN,个人必须来自于哪一个认证DN。选择哪种方法取决于系统管理员。263 PKI/SSL/TLS为了保证目录数据在传输过程中的机密性和完整性,可以采用PKI(Public Key Infrastructure)和SSL(Security Socket Layer)或TLS(Transport Layer Security)结合的方法实现这些安全性。利用PKI机制在绑定请求中实现客户与服务器的身份认证,可以防止欺骗攻击和防止数据被窜改,然后利用PKI机制进行SSL协商建立SSL或TLS,实现加密传输,使sniffer攻击无用武之地。 27 LDAP服务器配置文件 LDAP服务器是高度可配置的,仅仅通过修改一些配置项就可以完成。为了使叙述不抽象,本节以openldap的slapd.conf文件为例,这个文件包含了openldap软件的所有配置项。按照位置的先后,slapd.conf文件的开始部分使全局配置项,后面是与个数据库有关的配置,全局配置项影响所有的数据库的缺省配置。下面给出一个具体例子及其说明。 1. # example config file - global configuration section2. include /usr/local/etc/schema/core.schema schema文件3.referral ldap:/ 参考指针 4.access to * by * read 全局存取控制5. # BDB definition for the 6. database bdb 第一个数据库bdb 7. suffix dc=example,dc=com #该数据库的查询的DN后缀8. directory /usr/local/var/openldap-data 该数据库文件所处的位置9. rootdn cn=Manager,dc=example,dc=com 超级管理员DN10. rootpw secret 超级管理员口令11. # replication directives12. replogfile /usr/local/var/openldap/slapd.replog #复制日志文件的位置13.replica host=:389 从数据库的主机名和端口14. binddn=cn=Replicator,dc=example,dc=com 执行改变操作的绑定DN15. bindmethod=simple credentials=secret# 绑定方法及执行绑定操作的DN的口令 16. replica host= # 第二个从数据库17. binddn=cn=Replicator,dc=example,dc=com18. bindmethod=simple credentials=secret19. # indexed attribute definitions20. index uid pres,eq21. index cn,sn,uid pres,eq,approx,sub22.index objectClass eq 2022行指明为哪些属性维护索引23. # database access control definitions24. access to attr=userPassword25. by self write26. by anonymous auth27. by dn=cn=Admin,dc=example,dc=com write28. by * none29. access to *30. by self write31. by dn=cn=Admin,dc=example,dc=com write32. by * read 第24行到第32行说明了对本数据库中条目的存取控制。对于所有适合的条目,userPassword属性只能被条目本身和“admin”条目写入。它可以被用来进行认证或者授权,但是其他情况时不能读取的。所有其他的条目可以被条目本身和“admin”条目写入,并且可以被其他任何用户读取(认证过或者没有认证过的用户)。33. # BDB definition for 34. database bdb35. suffix dc=example,dc=net36. directory /usr/local/var/openldap-data-net37. rootdn cn=Manager,dc=example,dc=com38. index objectClass eq39. access to * by users read 定义了另外一个BDB数据库 第三章 统一认证系统下的目录服务与安全认证31 系统结构概述图 3-1311 LDAP应用网关LDAP应用网关的主要功能是:把资源服务器发送过来的统一格式的数据包转化为标准的LDAP过程,按照处理的要求进行LDAP API调用,返还结果给资源服务器。虽然LDAP提供了API可以直接作为认证服务器,但是存在以下问题:l LDAP的API过程复杂,要求资源服务器必须包含响应平台的LDAP相关的lib、include以及使用过程复杂、要求严格的认证过程。l 目录服务器直接给应用提供认证,如果设计不科学,认证服务器安全性不高。存在一个应用网关,可以解决上面的问题。另外

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论