一种轻量级目录访问协议下访问目录的系统及方法

文档序号:7655100阅读:164来源:国知局
专利名称:一种轻量级目录访问协议下访问目录的系统及方法
技术领域
本发明涉及LDAP (Lightweight Directory Access Protocol,轻量级目录访 问协议)下访问目录的系统及方法,特别是有关于LDAP客户端协议RFC1823 中LDAP一Result接口实现的改进方法。
背景技术
LDAP是用于访问目录服务的一个标准的,可扩展的internet协议。部分 基于X.500标准,但更简单,更精炼,可扩展性更好。 本文涉及的LDAP协议概念包括
1) 目录Directory,存放对象的信息,这些信息以某种顺序组织,详细描述每 个对象。2) 目录信息树DIT, Directory Information Tree,目录条目的集合构成了 目录信息树。3) 条目Entry,目录信息树中的一个节点,是一个对象信息的集合,是目 录信息中最基本的单位,包含该对象的一系列属性。4) 属性Attribute,属性描述对象的特征。 一个属性由属性类型(type)和一 个或多个属性值。
如图1所示, 一个简化的DIT结构。该DIT有三层,第一层为DIT的根, 表示中国OCN。第二层的两个条目表示两家公司O-XXX和OYYY。第三 层的左边四个条目表示XXX公司有四个职员,分别是Zhang、Wang、Li、Cheng。 各条目的具体属性未列出。
如图2所示,LDAP客户端100为了和LDAP服务器端200交互,完成 DIT的存储和访问,LDAP客户端100需要包含LDAP业务层110 (客户端应 用部分)和LDAP适配层130,两者以LDAPAPI120为接口。 LDAP适配层 130提供标准的API (Application Programming Interface,应用程序接口)的实 现,LDAP客户端100调用API接口 120完成对LDAP服务器端200的访问。在RFC1823中定义了 C语言形式的访问LDAP服务器端200的API接口 120。 LDAP客户端100与LDAP服务器端200基本的交互流程包括1. 建立连接2. 绑定和权限认证3. 客户端发起增删查改操作4. 客户端检査服务器端的响应结果5. 客户端发起后续操作。6. 客户端关闭连接此处仅描述与本发明相关的第3步和第4步。客户端100发起增加(调用 ldap_add接口 ) /删除(调用ldap—delete接口 ) /修改(调用ldap—modify接口 ) 操作时,可以使用同步调用接口或者异步调用接口。本发明只涉及对异步调用 接口的改进,因此仅描述RFC1823对异步调用接口的定义。(为简单描述, 以ldap—add接口为例,ldap—modify和ldap—delete可相同处理)ldap—add接口定义如下int ldap—add( LDAP *ld, char *dn, LDAPMod *attrs[〗);客户端100调用此接口后,会得到一个整形的返回值,我们称之为消息序 列号msgid。由于是异歩调用,需要客户端100定时调用LDAP—Result接口检 査服务器端返回的结果。LDAP—Result接口定义如下 int ldap—result(LDAP *ld, int msgid, int all, struct timeval *timeout, LDAPMessage **res) ,其中msgid入参即为前面调用LDAP_ADD的返回值。LDAP_Result接口 用户检査服务器端200是否已经返回了对应msgid的响应。如图3所示,以图1中DIT为例,是LDAP客户端100向服务器端200 增加条目的流程(以增加条目为例,同样适用于修改和删除条目)为了增加 XXX公司的"Zhang"和"Wang"两个职员,包括如下步骤歩骤301, LDAP客户端100调用ldap—add接口,向服务器端200异步发 送增加条目请求(增加职员Zhang),该操作请求以msgid^1标示。LDAP客 户端IOO获得控制权,但是此时不知道增加条目操作是否成功。步骤302-a, LDAP服务器端200处理增加条目请求,并将处理结果返回 给LDAP客户端100,以msgid=l标示响应结果,该响应结果被暂时保存在 LDAP客户端的缓存区中;步骤302-b, LDAP客户端100定时调用ldap—result接口,检查本地缓冲 区是否得到服务器端200返回的对应msgid^的响应。如果得到响应,则根据 响应结果进行后续处理。(此处假设为增加成功)步骤303, LDAP客户端100调用ldap—add接口,向服务器端200异步发 送增加条目请求(增加职员Wang),该操作请求以msgid二2标示。LDAP客 户端获得控制权,但是此时不知道增加条目操作是否成功。步骤304-a, LDAP服务器端200处理增加条目请求,并将处理结果返回 给LDAP客户端100,以msgid=2标示响应结果,该响应结果被暂时保存在 LDAP客户端100的缓存区中;歩骤304-b, LDAP客户端100定时调用ldap—result接口 ,检査本地缓冲 区是否得到服务器端200返回的对应msgid-2的响应。如果得到响应,则根据 响应结果进行后续处理。(此处假设为增加成功)在这个调用过程中我们可以看到LDAP—Result被调用了两次。如果我们 需要增加XXX公司的所有员工,则LDAP—Result会被调用四次。LDAP—Result 每次调用,都会有一个短暂的延时,此延时时间由structtimeval *timeout入 参定义。因此可以看出,如果LDAP—Result调用次数过多,会影响LDAP客 户端的处理性能。发明内容为解决上述问题,本发明的目的在于提出一种轻量级目录访问协议下访问 目录的系统及方法,以解决LDAP—Result调用多次的问题。为实现上述问题,本发明提供了一种轻量级目录访问协议下访问目录的系 统,包括客户端,用于对目录信息树进行操作时,采用异步调用方式,发送操作请求,并将返回的该操作请求的响应结果暂存在缓冲区中;服务器端,与该客户端通过轻量级目录访问协议程序应用接口连接,用于 接受该客户端发送的该操作请求,执行并返回响应结果,将该响应结果以对应 操作请求的消息序列号进行标示;其中,该客户端进一步包括一响应结果检查模块,用于记录所要检查的一个或多个操作请求的消息序 列号,在该缓冲区中,检查与所记录消息序列号对应的操作请求的响应结果是 否全部返回,若全部返回,则上报响应结果,若没有全部返回,则在该缓冲区 中重复检査,若检查超时,则返回超时错误。上述的轻量级目录访问协议下访问目录的系统,其中,该响应结果检査模i央为 LDAP—ResultEx接口。上述的轻量级目录访问协议下访问目录的系统,其中,该LDAP—ResultEx 接口进一步包括 一变长数组,用于记录多个消息序列号。上述的轻量级目录访问协议下访问目录的系统,其中,该LDAP一ResultEx 接口进一步包括 一参数,用于标示所记录的消息序列号的数量。上述的轻量级目录访问协议下访问目录的系统,其中,该LDAP—ResultEx 进一步包括另一变长数组,用于记录多个操作请求的响应结果。上述的轻量级目录访问协议下访问目录的系统,其中,该客户端进一步包括业务层,用于接收上报的该响应结果,根据该信息序列号识别对应的每个 操作请求的响应结果。为实现上述目的,本发明还提供一种轻量级目录访问协议下访问目录的方法,其中,包括步骤一,客户端对目录信息树进行多个增加条目,删除条目和/或修改条 目的操作时,采用异步调用方式,发送多个操作请求,并记录所要检查的一个 或多个操作请求的消息序列号;步骤二,服务器端对该多个操作请求,并发执行,并将每个操作请求的响 应结果,以对应操作请求的消息序列号标示,异步返回给该客户端,存储在该客户端的缓冲区中;步骤三,在该缓冲区中,检査与所记录消息序列号对应的操作请求的响应结果是否全部返回,若全部返回,则上报响应结果,若没有全部返回,则在该 缓冲区中重复检查。上述的轻量级目录访问协议下访问目录的方法,其中,该步骤三进一步包括若在该缓冲区中检查该响应结果的时间,超过预定时间,则返回超时错误 的步骤。上述的轻量级目录访问协议下访问目录的方法,其中,该歩骤三进一步包括-将在该缓冲区中检查到的与该消息序列号对应的响应结果进行记录,在全 部对应的响应结果记录完毕后,发送该响应结果至该业务层的步骤。上述的轻量级目录访问协议下访问目录的方法,其中,该步骤三之后进一 步包括该业务层接收该上报的响应结果后,根据该消息序列号识别对应的每个操 作请求的响应结果。本发明提出了扩展LDAP一Result接口参数定义,可以解决上述 LDAP—Result需要多次调用的问题,提高LDAP客户端的处理性能。


图1是LDAP的DIT示意图;图2是现有技术中支持LDAP协议下目录访问的系统结构示意图;图3是现有技术中LDAP客户端调用流程示意图;图4是本发明系统的结构示意图;图5是本发明改进后的LDAP客户端调用流程示意图。
具体实施方式
下面结合附图和具体实施方式
对本发明作进一步详细的说明。 如图3所示,本发明LDAP协议下访问目录的系统示意图。该系统包括 LDAP客户端100、 LDAP服务器端200,其中LDAP客户端100用于对DIT 进行多个增加条目,删除条目和/或修改条目的操作时,采用异步调用方式, 发送操作请求,并将所述操作请求的响应结果暂存在缓冲区中;LAP服务器端200与LDAP客户端100通过LDAP API连接,用于接受 LDAP客户端100发送的所述操作请求,执行并返回响应结果,将响应结果以对应操作请求的消息序列号进行标示;该LDAP客户端100进一步包括 一响应结果检查模块140,用于记录多 个客户端100发送至服务器端200的操作请求的消息序列号,在缓冲区中,检 査与所述记录的消息序列号对应的响应结果是否全部返回,若全部返回,则上 报响应结果,若没有全部返回,则在缓冲区中重复检査,直到超时,并返回错 误。该响应结果检査模i央140为LDAP—ResultEx接口,是对LDAP—Result 接口的扩展。扩展的改动点包括将入参msgid定义为多值入参,例如,变长 数组intmsgid[],并新增参数msgnum表示需要检査的msgid的数量。将入参 res定义为变长数组LDAPMessage **res[]。LDAP—ResultEx实现的原理是根据变长数组msgid[]中每一个msgid,在客户端缓冲区中寻找是否已经返回的响应。如果已经返回响应则将响应结果填 写到对应res数组中。如果msgnum个请求都从缓冲区中找到响应,则返回成 功。否则重复查找缓冲区,直到规定的timeout时间到,返回超时错误。本发明还提供了一种轻量级目录访问协议下访问目录的方法,包括以下步骤(1) LDAP客户端100对于DIT树中同层的多个Entry做增/删/改时,采 用异步调用方式,发送操作请求。并记录每个请求的序列号msgid。(2) LDAP服务器端200对LDAP客户端100发送的多个操作请求,并 发执行,并将每个操作请求的响应结果以各自的msgid为标示,异步返回给 LDAP客户端100。(3) LDAP客户端100提供缓冲区,缓存服务器端200返回的多个操作 请求的响应结果。(4) 业务层110调用LDAP—ResultEx在缓冲区中检査各操作请求的响应 结果,在入参中指定需要检査的一个和多个操作请求,以msgid为各请求的标 识。(5) LDAP客户端100利用LDAP—ResultEx入参中指定的msgid数组在 缓冲区中査找各自对应的响应结果是否存在。如果所有的响应结果均返回,LDAP客户端100记录响应结果至res数组,并返回业务层LDAP一ResultEx调 用结果。否则,LDAP客户端100重复检查缓冲区,直到响应结果均返回,若 超过预定时间,则返回超时错误。(6)业务层110检查res数组,根据msgid识别对应每个操作请求的响应结果。如图5所示,本发明中对LDAP客户端向服务器端增加条目的流程(以增 加条目为例,同样适用于修改和删除条目)的改进,包括以下步骤。步骤501 , LDAP客户端100调用ldap一add接口 ,向服务器端200异步发 送增加条目请求(增加职员Zhang),该操作请求以msgid^标示。LDAP客 户端获得控制权,但是此时不知道增加条目操作是否成功。步骤502, LDAP客户端IOO调用ldap—add接口,向服务器端200异步发 送增加条目请求(增加职员Wang),该操作请求以msgid二2标示。LDAP客 户端获得控制权,但是此时不知道增加条目操作是否成功。步骤503a, LDAP服务器端200对LDAP客户端100发送的两个操作请 求,并发执行,并将每个请求结果以各自的msgid (1和2)为标示,异步返 回给LDAP客户端100。歩骤503b, LDAP客户端100利用LDAP—ResultEx入参中指定的msgid 数组在缓冲区中查找各自对应的响应是否存在,LDAP客户端IOO将返回的响 应结果加入res数组,如果所有的响应均返回,则返回业务层LDAP—ResultEx 调用结果,否则LDAP客户端IOO重复检査缓冲区,直到超时或者所有响应均 返回。综上所述,采用本发明方法,对于需要对DIT中同一层条目进行增加、 删除和/或修改时,可用充分利用服务器端200并发处理能力。减少 LDAP—Result的调用次数,提高LDAP客户端100的处理性能。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情 况下,熟悉本领域的普通技术人员当可根据本发明做出各种相应的改变和变 形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种轻量级目录访问协议下访问目录的系统,包括客户端,用于对目录信息树进行操作时,采用异步调用方式,发送操作请求,并将返回的所述操作请求的响应结果暂存在缓冲区中;服务器端,与所述客户端通过轻量级目录访问协议程序应用接口连接,用于接受所述客户端发送的所述操作请求,执行并返回响应结果,将所述响应结果以对应操作请求的消息序列号进行标示;其特征在于,所述客户端进一步包括一响应结果检查模块,用于记录所要检查的一个或多个操作请求的消息序列号,在所述缓冲区中,检查与所记录消息序列号对应的操作请求的响应结果是否全部返回,若全部返回,则上报响应结果,若没有全部返回,则在所述缓冲区中重复检查,若检查超时,则返回超时错误。
2. 根据权利要求1所述的轻量级目录访问协议下访问目录的系统,其特 征在于,所述响应结果检查模块为LDAP—ResultEx接口 。
3. 根据权利要求2所述的轻量级目录访问协议下访问目录的系统,其特 征在于,所述LDAP—ResultEx接口进一步包括 一变长数组,用于记录多个 消息序列号。
4. 根据权利要求2或3所述的轻量级目录访问协议下访问目录的系统, 其特征在于,所述LDAP_ResultEx接口进一步包括 一参数,用于标示所记 录的消息序列号的数量。
5. 根据权利要求4所述的轻量级目录访问协议下访问目录的系统,其特 征在于,所述LDAP—ResultEx进一步包括另一变长数组,用于记录多个操 作请求的响应结果。
6. 根据权利要求l所述的轻量级目录访问协议下访问目录的系统,其特 征在于,所述客户端进一步包括业务层,用于接收上报的所述响应结果,根据所述信息序列号识别对应的 每个操作请求的响应结果。
7. —种轻量级目录访问协议下访问目录的方法,其特征在于,包括步骤一,客户端对目录信息树进行多个增加条目,删除条目和/或修改条目的操作时,采用异步调用方式,发送多个操作请求,并记录所要检查的一个或多个操作请求的消息序列号;步骤二,服务器端对所述多个操作请求,并发执行,并将每个操作请求的 响应结果,以对应操作请求的消息序列号标示,异歩返回给所述客户端,存储在所述客户端的缓冲区中;步骤三,在所述缓冲区中,检查与所记录消息序列号对应的操作请求的响 应结果是否全部返回,若全部返回,则上报响应结果,若没有全部返回,则在 所述缓冲区中重复检査。
8. 根据权利要求7所述的轻量级目录访问协议下访问目录的方法,其特 征在于,所述步骤三进一步包括若在所述缓冲区中检查所述响应结果的时间,超过预定时间,则返回超时 错误的步骤。
9. 根据权利要求7所述的轻量级目录访问协议下访问目录的方法,其特征在于,所述步骤三进一步包括将在所述缓冲区中检査到的与所述消息序列号对应的响应结果进行记录, 在全部对应的响应结果记录完毕后,发送所述响应结果至所述业务层的步骤。
10. 根据权利要求9所述的轻量级目录访问协议下访问目录的方法,其特 征在于,所述步骤三之后进一步包括所述业务层接收所述上报的响应结果后,根据所述消息序列号识别对应的 每个操作请求的响应结果。
全文摘要
本发明提供了一种轻量级目录访问协议(LDAP)下访问目录的系统及方法,该系统包括客户端,用于对目录信息树进行操作时,采用异步调用方式,发送操作请求,并将返回的操作请求的响应结果暂存在缓冲区中;服务器端,与客户端通过LDAP API连接,用于接受客户端发送的操作请求,执行并返回响应结果,将响应结果以对应操作请求的消息序列号进行标示;其中,客户端还包括一响应结果检查模块,用于记录所要检查的一个或多个操作请求的消息序列号,在缓冲区中,检查与所记录消息序列号对应的操作请求的响应结果是否全部返回,若全部返回,则上报响应结果,若没有全部返回,则在缓冲区中重复检查,若检查超时,则返回超时错误。
文档编号H04L29/10GK101335742SQ200710117840
公开日2008年12月31日 申请日期2007年6月25日 优先权日2007年6月25日
发明者昂卫武 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1