首页> 中国专利> 在目录服务中的动态拓扑改变的自动发现和重新配置

在目录服务中的动态拓扑改变的自动发现和重新配置

摘要

一种代理目录服务器在启动之后并且在接受客户端请求之前立即发现分布式目录服务器的拓扑。在启动之后立即地,代理服务器执行查询以从分布式目录服务器提取对应于目录分布信息的结构数据。通过使用目录更新操作而将在操作期间直接在代理目录服务器处对拓扑信息所进行的任何动态配置改变传播至分布式目录服务器,来实现对分布式目录的动态拓扑重新配置。

著录项

  • 公开/公告号CN101563686A

    专利类型发明专利

  • 公开/公告日2009-10-21

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200780045277.4

  • 发明设计人 阿珀瓦·库玛;

    申请日2007-12-05

  • 分类号G06F17/30;

  • 代理机构北京市柳沈律师事务所;

  • 代理人邸万奎

  • 地址 美国纽约阿芒克

  • 入库时间 2023-12-17 22:48:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-22

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20120530 终止日期:20181205 申请日:20071205

    专利权的终止

  • 2012-05-30

    授权

    授权

  • 2009-12-16

    实质审查的生效

    实质审查的生效

  • 2009-10-21

    公开

    公开

说明书

技术领域

本发明涉及一种方法、代理服务器以及代理目录系统,其用于使用代理的分布式目录。

背景技术

引言

目录是为读取访问而优化的专用数据库,其具有存储关于异源的真实世界实体(如人、资源、策略、服务、应用等)的信息的能力,在单个实例中使得它们成为企业的安全和身份管理框架的关键组分。典型地,目录由条目的目录信息树(DIT)构成。例如,访问因特网上的目录的标准方式是LDAP(轻量级目录访问协议(v3):技术规范,RFC 3377。http://www.ietf.org/rfc/rfc3377.txt),其允许在多个服务器上分布DIT。LDAP支持对使用转介(referral)机制的目录操作的分布式处理。每个服务器包含被称作命名上下文的条目的子树、以及至包含相关上下文的其他服务器的引用。当客户端请求不能被服务器完全响应时,该服务器返回对另一服务器的转介至该客户端。其缺点是:在显著程度上减慢了操作处理。

LDAP协议和对分布式目录的支持

LDAP是通过TCP/IP访问符合X.500信息模型的目录的标准手段。LDAPv3(如由RFC 2251、2252(http://www.ietf.org/rfc/rfc2251.txt和http://www.ietf.org/rfc/rfc2252.txt)定义的)规定了除了用于访问目录的功能模型之外的信息、命名和安全模型。

LDAP信息和命名模型

LDAP假设一个或多个服务器的存在,所述一个或多个服务器联合提供对由条目(entry)组成的DIT的访问。条目被定义为一组具有所需的对象类别属性的属性值对,所述对象种类属性确定其强制和可选的属性。每个条目具有属于分层命名空间的区别名称(DN)。DIT的根具有“空”DN。图1示出了示例目录树10,并具有inetOrgPerson[RFC 2798]条目。每个节点(表示为圆圈)以其相对DN(RDN)命名。通过将其RDN作为前缀添加到其父DN之前,来构建条目的DN。

功能模型

LDAP采用的功能模型[RFC 2251]是执行针对服务器的协议操作的客户端之一。LDAP定义了三种操作:查询操作(如搜索、比较)、更新操作(如添加、修改、删除、修改DN(条目移动))以及连接/断开连接操作(如绑定、解除绑定、丢弃)。添加和删除操作用于向/从目录添加/删除各个条目。修改操作可用于添加、删除或替换条目的一个或多个属性的一个或多个值。

由于为读取访问优化目录,所以,最普通的LDAP操作是搜索,其提供从目录访问信息的灵活手段。LDAP搜索操作(还被称作查询)由下列表示与查询相关联的语义信息的参数组成:(i)基(base):定义DIT中的搜索的起始点的DN,(ii)范围:{BASE,SINGLE LEVEL,SUBTREE}指定在DIT内从基搜索多深,(iii)过滤器(filter):使用标准运算符AND(&)、OR(|)和NOT(!)的谓词的布尔组合,其指定搜索准则,(iv)属性:来自匹配过滤器的条目的一组所需属性。特殊值“*”对应于选择所有属性。目录中的每个条目属于至少一个(对象)类别,从而过滤器(objectclass=*)匹配目录中的所有条目。使用RFC 2254[3]的括弧前缀符号(例如:(&(sn=Doe)(givenName=John)))来表示LDAP过滤器。谓词的示例是:(sn=Doe)、(age≥30)、(sn=smith*),其中,“Doe”、“30”和“smith”是分别表示等同(equality)、范围和子串断言的断言(assertion)值。

分布式目录模型

LDAP支持将目录划分到多个服务器中,并且每个服务器持有一个或多个命名上下文。命名上下文是根在被称为其后缀的条目、并由叶条目或特殊转介对象终止的子树,转介对象指向持有其它从属(subordinate)命名上下文的服务器。除了这些向下指向DIT的从属转介之外,还通过上级(superior)(或默认)转介来配置服务器,该转介在DIT中向上指向(point upward)更接近于DIT根的服务器。当相遇(encountered)时,转介对象用于生成针对客户端的转介消息。转介消息包含形式ldap://<host>:<port>/<DN>的LDAPURL,其中,DN是被指向的命名上下文的后缀,并且host是包含命名上下文的服务器的充分合格的域名或IP地址。客户端通过联系所引用的(多个)服务器来进行操作。

在可以执行任何目录操作之前,必须定位其目标对象(例如,搜索请求的基)。在分布式目录中,这被称作分布式名称解析。通常,分布式名称解析经由默认转介而沿DIT向上进行,直到遇到根或具有作为目标对象的始祖(ancestor)的后缀的命名上下文为止。此后,分布式名称解析经由从属转介而沿DIT向下进行,直到遇到目标对象位置。一旦已经解析了目标,则在发现目标的服务器,开始操作评估(evaluation)阶段。在评估阶段期间遇到从属转介的子树范围的搜索发送转介消息至客户端,以进行操作。

图2示出了具有共同服务o=xyz命名空间的三个服务器主机A 22、主机B 24和主机C 26的系统20。主机A 22包含具有后缀为o=xyz的单个命名上下文,并且包含除了在分别由从属服务器主机C 26和主机B 24持有的c=in和ou=research、c=us子树下的条目之外的所有在o=xyz下的条目。客户端28请求具有基为o=xyz、从主机B 24的子树搜索。因为主机B 24不包含目标,所以其使用其默认转介,将客户端指向主机A 22。客户端28联系包含目标对象的主机A 22。主机A 22执行对其持有的分区的搜索,并且返回三个匹配的条目和转介(对于针对从属命名上下文的主机B 24和主机C 26)至客户端。最后,客户端28发送搜索请求(具有修改的基)至返回其余条目的主机B 24和主机C 26。在客户端与服务器之间需要四个往返来评估一个请求。在最差的情况下,在客户端与服务器之间交换的消息的总往返数几乎为服务器数量的两倍。此示例详细说明了LDAP中的基于转介的分布式查询评估机制为什么较慢。

其它解决方案

消除转介的一个方式是使用目录请求的链接,如“X.500ITU-T建议:开放系统互连-目录:概念、模型和服务概述,X.518|9594,第4部分:分布式操作的程序”中描述的那样。在此方法中,不同于将转介发回至客户端,服务器将请求“链接”至所引用的服务器,并且将结果转发至客户端。然而,如果客户端请求未包含在服务器中的目标条目,则链接通常会无效。在这种情况下,需要对条目DN的解析,并且链接会涉及大量服务器,从而结果在到达客户端之前需要在几个服务器之间流动。这导致不必要的服务器至服务器通信。

消除转介的较好的方式是通过在分布式目录的前端具有目录代理(在下文中称作“代理”)。代理通常位于客户端与分布式目录服务器之间。代理可以用作截取客户端请求的服务器,或可以用作用以评估请求的、对分布式目录服务器的客户端。代理具有关于目录中的命名上下文如何映射到分布式环境中的服务器的知识。通过此目录拓扑信息配置的代理随后可以用于将客户端操作分配为子操作(如果需要),将请求路由到适当的服务器,并且将综合结果发送至客户端。当前的代理目录解决方案(例如,开源的OpenLDAP服务器http://www.openldap.org的“代理目录”)基于利用拓扑信息来配置代理。

与使用这种在代理处的分区信息的静态配置关联的缺点是,构成分布式目录的每个服务器具有其自己的管理接口,其允许在其下添加/移除命名上下文。目录协议不提供向客户端(或者在此情况下,代理)通知更新的支持。另外的缺点是不存在用以对分布式目录配置进行改变的集中手段。例如,在目录设置中的配置改变需要在多个目录服务器处的改变。关于当前的解决方案的另外的缺点是,管理分布式目录变得日益困难,导致由于代理处的拓扑信息而导致的目录查询的不正确评估。

发明内容

本发明的一个目标是提供一种方法、代理服务器和代理目录系统,其适配于相关联的分布式目录中的动态拓扑变化,而无需任何在提供至客户端的代理服务中的中断。

本发明的另一目标是提供一种方法、代理服务器和代理目录系统,以支持通过代理服务器而对分布式目录的确定配置特性的集中管理(命名为动态重新配置)

本发明利用以下事实:目录标准的共同实施存储目录分布信息(如划分和复制)作为参与分布式目录服务的目录服务器中的结构数据(即,遵循目录方案的数据)。

本发明提供了存储在代理处的拓扑信息、与实际的分布式目录拓扑之间的双向同步。通过实施拓扑发现和提供一端同步的拓扑适配,实现关于拓扑变化的代理的“在线”行为。另外,可以实施动态拓扑重新配置,其提供另一方向上的同步。

根据实施例,代理目录服务器被配置为在启动之后并且在接受客户端请求之前,立即发现分布式目录服务器的拓扑。有利地,不通过拓扑信息来配置代理目录服务器。相反,通过至分布式目录服务器的每一个的连接信息来配置它,其中,期望对所述分布式目录服务器提供代理服务。在启动之后立即地,所述代理目录服务器执行某特殊查询,以从分布式目录服务器提取对应于目录分布信息的结构数据。

通过代理服务器而实现分布式目录的动态拓扑重新配置如下:通过目录更新操作而将在操作期间在代理目录服务器上直接对拓扑信息所进行的动态配置改变传播至分布式目录服务器。这些更新操作应用于在拓扑发现阶段所发现的分布式目录服务器中的相同结构数据。

通过保持对应于特殊请求的代理服务器的过滤器与分布式目录服务器同步,保持所发现的拓扑信息为最新。

附图说明

图1示出了示例的已知LDAP目录信息树和相关条目。

图2示出了用于分布式查询处理的典型服务器系统。

图3是代理目录系统的示意框图。

图4示出了表示为二叉树的六个命名上下文。

图5是可以用于实施图1至4的生成器、架构和方法的计算机系统的示意框图。

具体实施方式

概述

图3示出了代理目录系统40。系统40首先包括代理目录服务器42。代理目录服务器42与客户端服务器44相连接,并且从客户端服务器44接收目录请求(客户端请求)。代理目录服务器42也连接到分别被标识为主机1、主机2和主机3的多个目录服务器46、48、50。代理目录服务器42将客户端请求路由至适当的目录服务器46、48、50。代理目录服务器42还包括处理器62和数据存储器64,它们的功能将在下面描述。

发现目录拓扑

代理目录服务器42需要下列拓扑信息,以能够路由客户端请求:

(i)命名上下文到服务器的映射

(ii)确定哪些服务器主控(master)复制的上下文。

代理目录服务器42执行下列步骤,以将命名上下文映射到服务器:

1.代理目录服务器42在数据存储器64中存储针对目录服务器46、48、50的连接信息(证明(credential))。在一个示例中,此信息是URL(LDAPURL)、区别名称(DN)和密码。在启动时,代理目录服务器42的处理器62使用连接信息来连接(使用例如LDAP绑定请求)到目录服务器46、48、50。

2.如果所有目录服务器连接成功,则将布尔本地变量partial_results设置为FALSE。否则,将partial_results设置为TRUE。对于不能联系的目录服务器46、48、50的每一个,以预定义间隔“Tretry_interval”来发送请求,直到达到被定义为“Tretry_limit”的尝试限制值为止。

3.对于成功的目录连接的每一个,代理目录服务器42发送查询,以获得在目录服务器46、48、50上持有的命名上下文。对于LDAP目录,代理目录服务器42可以通过base:“”,scope:base,filter:(objectclass=*),attrs:{namingcontext}来发送LDAP搜索请求。此查询从子树的根检索namingcontext属性的值。此属性是多值的,并且其值的示例可以是:cn=users、dc=xyz、dc=com以及cn=groups、dc=xyz、dc=com。

4.namingcontext属性的值向代理目录服务器42提供在目录服务器46、48、50持有的命名上下文的根。然而,因为命名上下文在其在转介条目中终止的情况下可能不是条目的完整子树。所以,为了检索转介条目,对于由目录服务器46、48、50返回的命名上下文属性的每个值,发送单独的查询。LDAP查询base:<naming context value>,scope:subtree,filter:(objectclass=referral),attrs:ref可以被用于检索所有转介URL。

5.一旦已经完全发现了在目录服务器46、48、50中定义的命名上下文,则使用此信息创建路由表(并存储在数据存储器64中)。路由表将目录服务器46、48、50中的唯一命名上下文映射到包含这些命名上下文的服务器主机名称。命名上下文完全由其根、以及0或更多个转介来定义。对于图2,命名上下文对比服务器的表将如下:

表1

在不存在复制(如上面示例中)的情况下,路由表将具有命名上下文与目录服务器之间的一对一映射。在有复制的情况下,多个目录服务器(即,服务器46、48、50)可以包含给定的命名上下文。虽然此表可以用于在代理目录服务器42路由只读的客户端请求,但是需要用于更新操作的单独表,因为此表不包含主信息。

6.目录中的复制单位是命名上下文。典型地,复制协定(在目录服务器之间)的细节被存储在子条目、或与复制的命名上下文的根条目相关联的属性中。可以使用与用于检索转介的查询相类似的查询来从复制协定检索属性,所述复制协定指定包含命名上下文的目录服务器是否为针对那个特定命名上下文属性的主服务器或从服务器。

7.一旦主/从信息可用,则构建新路由表,其将命名上下文映射到“主控”该命名上下文的目录服务器46、48、50。可以由代理42使用此表来路由来自客户端44的更新请求。

在上文中,连接信息涉及由代理服务器42(或客户端)验证和建立与目录服务器46、48、50的通信所需的证明(例如,用户名、密码或X.509证书)。另一方面,拓扑信息是关于在多个服务器之间如何划分目录的知识。有利地,这里公开的代理目录服务器42仅以连接信息来配置。代理目录服务器42通过查询分布式目录服务器来发现拓扑信息,如上面的步骤3、4和6中描述的。

示例实施例提供了在代理目录服务器42处的拓扑发现和同步。拓扑信息是存储在代理目录服务器42处的元信息的示例。因此,代理目录服务器的主要功能是路由客户端请求,从而拓扑信息是唯一考虑的元信息。

适配于改变拓扑

代理目录服务器42可以使用下列两个方法中之一来适配于改变分布式目录服务器46、48、50的拓扑:

(i)周期性地发送拓扑查询(针对命名上下文、转介和复制协定)至目录服务器46、48、50,即,针对拓扑的改变而轮询目录服务器。

(ii)如果目录服务器支持持续模式的查询(其中,在查询结果被发送之后不关闭连接,并且随后在同一连接上发送对内容的任何变化),那么,使用持续模式来执行拓扑查询。在此模式中,目录服务器46、48、50将拓扑变化通知代理目录服务器42。

使用这些模式的任一个,在代理目录服务器42处可以检测到下列拓扑变化。

(i)将命名上下文添加至目录服务器

(ii)从目录服务器删除命名上下文

(iii)在目录服务器上修改命名上下文。

情况(iii)等效于移除命名上下文并添加另一个命名上下文,并且将不被分别考虑。

添加命名上下文

当在目录服务器46、48、50添加新命名上下文时,存在三种可能性:

(i)该命名上下文存在于另一目录服务器上

(ii)命名上下文的部分均不与现有的命名上下文重叠

(iii)命名上下文的某部分与一个或多个现有的目录服务器重叠。

如果在被称作server的主机发现具有作为root的根DN、以及作为Refs的转介列表的新命名上下文,则可以使用例程ADDCONTEXT(下面给出)来更新路由信息。“DnForest”是树的聚集(collection),其中,树的每个节点表示一个命名上下文。

每个节点包含下列字段:

·dn:命名上下文的根的区别名称

·ServerList:具有该命名上下文的服务器的列表

·Leftchild:指向首个从属命名上下文

·Rightchild:指向同等的命名上下文。

图4示出了表示为二叉树的六个命名上下文(由圆圈表示)。节点的名称是对应的命名上下文的根。如果leftchild不是NIL,则命名上下文具有一个或多个转介。rightchild用于指向转介链中的其它转介。

例程ADDCONTEXT

说明:

如果x是y的始祖,则ISSUFFIX(x,y)返回TRUE,否则返回FALSE。

INITTREE(T):初始化树。

2-11行:其在森林(forest)DnForest中的每个命名上下文树上循环。对于每个树T,其确定要被添加的命名上下文的根是否匹配该树的根、或作为该树的根的派生(descendant)。如果是,则其使用函数INSERT(下面给出)将该命名上下文的根以及其转介插入到T中。

12-19行:如果未发现这样的树(其中,可以插入命名上下文的根),则创建包含命名上下文的新命名上下文树NewTree,并且将其添加到树的列表(DnForest)。

考虑下列例程。

例程INSERT

说明:

INSERT(x,y,isroot,serer)在y下面的子树中插入节点x。如果被插入的节点是命名上下文的根,则设置isroot为TRUE,server是包含该命名上下文的主机。

INITLIST:初始化列表。

1-2行:如果在y下面不存在节点,则通过使得x为y的leftchild而将x放置在y下。

5-18行:通过y的从属上下文而迭代(iterate),并且将被添加的节点与从属上下文的根比较。6-9行处理当被添加的节点已经存在时的情况(情况1)。在此情况下,如果被添加的节点是上下文的根,则将包含该命名上下文的服务器添加到该上下文的ServerList。10-11行处理当x是y的从属上下文的始祖时的情况(情况2)。12-16行处理当x是y的从属上下文的派生时的情况(情况3)。这涉及对INSERT的递归调用。17行处理其余情况(情况4)。对于情况2和4,19-22行实际上进行节点插入。

移除命名上下文

通过下列例程而执行移除命名上下文。

例程REMOVECONTEXT

说明:

例程REMOVECONTEXT和REMOVE类似于ADDCONTEXT和INSERT。除了root、Refs涉及要被移除的命名上下文之外,对自变量的描述相同。

动态拓扑重新配置

可以将在代理目录服务器42配置的连接信息存储为结构数据,并且可以在操作期间修改其。这允许通过添加/移除针对目录服务器46、48、50的连接信息而添加/删除要被代理的新服务器。代理目录服务器42周期性地核查连接信息中的变化,并且连接/重新连接至分布式目录服务器46、48、50,其中,已经添加/修改了针对所述分布式目录服务器46、48、50的连接信息。

除了从代理配置动态添加和移除目录服务器46、48、50之外,还可以通过代理42进行分布式目录中的拓扑改变。如果在分布式目录服务器46、48、50中需要拓扑配置改变,则代替手动合并多个目录服务器中的变化,可以直接对存储在代理目录服务器42的拓扑信息进行改变。代理目录服务器42随后使用如添加、删除和修改的更新操作来对分布式目录服务器处的结构数据进行相应更新。

计算机平台

图5示出了可用于执行这里描述的方法的计算机系统100的示意框图。更具体地,可以提供计算机系统100用于执行计算机软件,其中,所述计算机软件被编程以从程序代码生成词素(lexemes)并且在两个或多个代码体之间生成代码变化描述。计算机软件在安装在计算机系统100上的例如MSWindows 2000TM、MS Windows XPTM或LinuxTM的操作系统下执行。

计算机软件涉及编程的逻辑指令组,其中,可以由计算机系统100来执行所述编程的逻辑指令以执行由这些指令指定的预定功能。可以以任何语言、代码、或符号来表达或记录计算机软件,所述任何语言、代码、或符号包括意图使得兼容的信息处理系统或直接地或在转换至另一语言、代码或符号之后执行特定功能的指令组。

计算机软件程序包括计算机语言的语句。可以使用编译器将计算机程序处理为适于由操作系统执行的二进制格式。以涉及执行上文描述的方法的特定步骤的各种软件组件或代码的方式来对计算机程序编程。

计算机系统100的组件包括:计算机120、输入设备110、115和视频显示器190。计算机120包括:处理单元140、存储器单元150、输入/输出(I/O)接口160、通信接口165、视频接口145和存储设备155。计算机120包括多于一个的任何前述单元、接口和设备。

处理单元140可以包括一个或多个处理器,其执行操作系统和在操作系统下运行的计算机软件。存储单元150可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪存和/或本领域已知的任何其它类型的存储器,用于在处理单元140的指示下使用。

将视频接口145连接至视频显示器190,并且所述视频接口145提供用于在视频显示器190上显示的信号。经由分别包括键盘和鼠标的输入设备110和115提供用以操作计算机120的用户输入。存储设备155可以包括硬盘驱动器或任何其它合适的非易失性存储介质。

将计算机120的每个组件连接至包括数据、地址和控制总线的总线130,以允许所述组件经由总线130而相互通信。可以使用至表示为因特网的网络180的通信信道185,经由通信接口165将计算机系统100连接至一个或多个其它类似的计算机。

可以提供计算机软件作为计算机程序产品,或将所述计算机软件记录在便携式存储介质上。在此情况下,可通过计算机系统100从存储设备155访问计算机软件程序。可作为选择的,可以通过计算机120直接从网络180访问计算机软件。在任一情况下,用户可以使用键盘110和鼠标115与计算机系统100交互,以对在计算机120上执行的编程的计算机软件进行操作。

为了说明性目的已经描述了计算机系统100。因此,前述描述涉及适于执行这之前描述的方法和计算机程序产品的、例如个人计算机(PC)的特定类型的计算机系统的示例。计算机编程领域中的技术人员将易理解,可以使用计算机系统的可作为选择的配置或类型来执行这之前描述的方面和计算机程序产品。

在此之前已经描述了方法、系统和计算机程序产品的实施例,其涉及标准与用以生成代表变换描述的所采用的程序代码的比较。前述详细说明仅提供了示例性实施例,而非意图限制本发明的范围、适用性或配置。更确切地,示例性实施例的描述向本领域的技术人员提供了用于实施本发明的实施例的使能描述。在不违背本发明的精神和范畴的情况下,可以对单元的功能和布置进行各种变化,如之后的权利要求书中提出的。

在其中,这里涉及的具体特征、单元和步骤具有本发明所涉及的本领域中已知的等价物,这种已知的等价物被认为合并在此,如同单独提出的。此外,关于特定实施例而涉及的特征、单元和步骤可以随意地形成任何其它实施例的部分,除非相反地声明。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号