公开/公告号CN101335742A
专利类型发明专利
公开/公告日2008-12-31
原文格式PDF
申请/专利权人 中兴通讯股份有限公司;
申请/专利号CN200710117840.6
发明设计人 昂卫武;
申请日2007-06-25
分类号H04L29/06(20060101);H04L29/10(20060101);G06F17/30(20060101);
代理机构
代理人
地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦
入库时间 2023-12-17 21:19:23
法律状态公告日
法律状态信息
法律状态
2023-07-14
未缴年费专利权终止 IPC(主分类):H04L29/06 专利号:ZL2007101178406 申请日:20070625 授权公告日:20110921
专利权的终止
2015-12-23
专利权的转移 IPC(主分类):H04L29/06 登记生效日:20151202 变更前: 变更后: 申请日:20070625
专利申请权、专利权的转移
2011-09-21
授权
授权
2009-02-25
实质审查的生效
实质审查的生效
2008-12-31
公开
公开
技术领域
本发明涉及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的根,表示中国C=CN。第二层的两个条目表示两家公司O=XXX和O=YYY。第三层的左边四个条目表示XXX公司有四个职员,分别是Zhang、Wang、Li、Cheng。各条目的具体属性未列出。
如图2所示,LDAP客户端100为了和LDAP服务器端200交互,完成DIT的存储和访问,LDAP客户端100需要包含LDAP业务层110(客户端应用部分)和LDAP适配层130,两者以LDAP API120为接口。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客户端100获得控制权,但是此时不知道增加条目操作是否成功。
步骤302-a,LDAP服务器端200处理增加条目请求,并将处理结果返回给LDAP客户端100,以msgid=1标示响应结果,该响应结果被暂时保存在LDAP客户端的缓存区中;
步骤302-b,LDAP客户端100定时调用ldap_result接口,检查本地缓冲区是否得到服务器端200返回的对应msgid=1的响应。如果得到响应,则根据响应结果进行后续处理。(此处假设为增加成功)
步骤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每次调用,都会有一个短暂的延时,此延时时间由struct timeval*timeout入参定义。因此可以看出,如果LDAP_Result调用次数过多,会影响LDAP客户端的处理性能。
发明内容
为解决上述问题,本发明的目的在于提出一种轻量级目录访问协议下访问目录的系统及方法,以解决LDAP_Result调用多次的问题。
为实现上述问题,本发明提供了一种轻量级目录访问协议下访问目录的系统,包括:
客户端,用于对目录信息树进行操作时,采用异步调用方式,发送操作请求,并将返回的该操作请求的响应结果暂存在缓冲区中;
服务器端,与该客户端通过轻量级目录访问协议程序应用接口连接,用于接受该客户端发送的该操作请求,执行并返回响应结果,将该响应结果以对应操作请求的消息序列号进行标示;
其中,该客户端进一步包括:
一响应结果检查模块,用于记录所要检查的一个或多个操作请求的消息序列号,在该缓冲区中,检查与所记录消息序列号对应的操作请求的响应结果是否全部返回,若全部返回,则上报响应结果,若没有全部返回,则在该缓冲区中重复检查,若检查超时,则返回超时错误。
上述的轻量级目录访问协议下访问目录的系统,其中,该响应结果检查模块为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的操作请求的消息序列号,在缓冲区中,检查与所述记录的消息序列号对应的响应结果是否全部返回,若全部返回,则上报响应结果,若没有全部返回,则在缓冲区中重复检查,直到超时,并返回错误。
该响应结果检查模块140为:LDAP_ResultEx接口,是对LDAP_Result接口的扩展。扩展的改动点包括:将入参msgid定义为多值入参,例如,变长数组int msgid[],并新增参数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=1标示。LDAP客户端获得控制权,但是此时不知道增加条目操作是否成功。
步骤502,LDAP客户端100调用ldap_add接口,向服务器端200异步发送增加条目请求(增加职员Wang),该操作请求以msgid=2标示。LDAP客户端获得控制权,但是此时不知道增加条目操作是否成功。
步骤503a,LDAP服务器端200对LDAP客户端100发送的两个操作请求,并发执行,并将每个请求结果以各自的msgid(1和2)为标示,异步返回给LDAP客户端100。
步骤503b,LDAP客户端100利用LDAP_ResultEx入参中指定的msgid数组在缓冲区中查找各自对应的响应是否存在,LDAP客户端100将返回的响应结果加入res数组,如果所有的响应均返回,则返回业务层LDAP_ResultEx调用结果,否则LDAP客户端100重复检查缓冲区,直到超时或者所有响应均返回。
综上所述,采用本发明方法,对于需要对DIT中同一层条目进行增加、删除和/或修改时,可用充分利用服务器端200并发处理能力。减少LDAP_Result的调用次数,提高LDAP客户端100的处理性能。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的普通技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
机译: 用于使用轻量级目录访问协议(LDAP)目录服务器验证用户身份的系统,方法和计算机程序产品
机译: 用于使用轻量级目录访问协议(LDAP)目录服务器验证用户身份的系统,方法和计算机程序产品
机译: 在轻量级目录访问协议目录环境中使用非本地数据的方法和系统