admin管理员组

文章数量:1532006

2024年6月13日发(作者:)

维普资讯

第28卷 

第4期 

VO1.28 

NO.4 

计算机工程与设计 

Computer Engineering and Design 

2007年2月 

Feb.2007 

基于Web服务的登录助手的设计与实现 

李培峰, 朱巧明 

(苏州大学计算机科学和技术学院,江苏苏州215006) 

摘 要:介绍了基于Web Services和COM技术的登录助手的设计思想、组成和总体构架,阐述了其主要的实现技术。该登录 

助手在不改变原有的Web应用结构的基础上,利用WebServices技术实现了一个登录代理服务,并在浏览器层次提供了一个 

面向用户的登录代理插件,该插件和登录代理服务协同工作,共同实现了异构Web信息系统之间用户身份信息的统一管理 

和统一存放。 

关键词:登录助手插件;登录代理;轻量目录访问协议;Web服务;简单对象访问协议 

中图法分类号:TP393 09 文献标识码:A 文章编号:1000-7024(2007)04-0842・4 0

Design and implementation of login assistant based on web services 

LI Pei—feng,ZHU Qiao—ming 

(School of Computer Science and Technology,Suzhou University,Suzhou 2 1 5006,China) 

Abstract:Firstly the design heory,system tcomponents and architecture ofthe login assistant which is based on he ttechnology ofweb 

services andCOMtechnology reintroduced.Thentahe implementationofsuch systemisdescribed.Wihoutchatngingthe structure of 

existing web applications,a login agent which is based on he ttechnology ofweb services is implemented,and a login ssistaant plug。n i

is provided for IE users. Wih the colltaboration oflogin agent and login assistant plug-in, it Can store and manage all kinds ofuser in・ 

formation uniformly, 

Key words:login assistant plug-in;login agent;LDAP;web services;SOAP 

0弓l言 

基于Web的信息系统得到日益广泛的应用,在提高工作 

效率的同时,多个不同的系统各自为政也带来了一系列的麻 

烦,其中之一就是每个系统都有自己的用户身份数据存储方 

式和登录信息验证过程。如果一个用户要访问不同的系统, 

1系统设计技术 

1.1登录助手构架 

登录助手由登录助手插件(1ogin ssiastant plug-in,LAP)、登 

录代理Web服务以及存放用户身份信息的数据库3个部分组 

成,系统的构架如图1所示。 

则必须分别在每个系统中注册自己的登录信息,这使得用户 

常常为记住一连串的用户名和口令而感到烦恼。 

兰墨 三卜、、. 

单点登录“卅以及统一身份认证 是解决以上问题的最佳 

方案,但存在已有系统整合困难以及代价大等缺点。为此,为 

至 录 代 理 户 用 

《 

鲁 

服 

务 

身 

份 

信 

息 

了不改变原有的系统结构并节省开发成本,我们设计了一个 

基于WebSevirces的登录助手,这是实现Web信息系统整合的 

个折中方案。 

它采用XMLWebServices和组件对象模型(componentoh- 

图1登录助手构架 

在图1中,LAP是一个IntemetExplorer(IE)的插件,存在于 

ject model,COM)作为主要实现技术,在不改变原有的Web应 

用结构的基础上,利用Web服务技术实现了一个登录代理服 

务,并在浏览器层次提供了一个面向用户的登录代理插件,该 

插件和登录代理服务相协作,从而实现了异构Web信息系统 

之间用户身份信息的统一管理和统一存放。 

收稿日期:2006-0l-l6 E.mail:pfli@suda.edu.cn 

用户的计算机上,而存放用户身份信息的数据库和登录代理 

Web服务则存在于服务器上。登录助手由服务器统一存放用 

户信息,并通过Web服务向各个LAP提供用户身份信息的服 

基金项目:江苏省高技术研究基金项目(BG2oo5020);江苏省教育厅自然基金项目(o4lJ 320l34)。, 

作者简介:李培峰(1971一),男,江苏苏州人,博士,副教授,研究方向为Web信息系统和中文信息处理; 朱巧明,男,教授,研究方向为 

中文信息处理和嵌入式系统。 

842— 

维普资讯

务(主要是用户登录信息,包括用户账号和口令)。 

登录助手利用轻量目录访问协议LDAP来对用户身份 

信息进行存储和方法,具体采用的LDAP服务器是ORACLE 

实现上述的半自动化登录。 

2登录代理实现技术 

登录代理主要通过简单对象访问协议(simple object access 

protocol,SOAP)“ 来和LAP进行通信,并通过Web服务的方式 

提供登录和代理等功能供用户调用。为了保证系统的安全, 

的OID(oracle intemet directory),并且采用.NET技术开发登 

录代理Web服务,采用Microsoft提供的ATL模板库来创 

建LAP。 

1.2登录助手插件原理 

LAP是信息集成服务架构的用户界面层,它是一种实现 

了IObjectWithSite“ 接口的COM组件。 

LAP在注册表中注册为COM服务器,另外,还必须将它 

们的CLSID在下面的位置: 

HKEY

LOCAL

MACHINE\SOFTWAREhMicmsoft\Windows\ 

__

本代理助手使用SOAP—DSIG 实现SOAP消息的数字签名,使 

用SSL协议进行数据传输。 . 

登录代理服务作为整个服务架构的业务逻辑层,主要任 

务是响应用户的请求,为用户提供登录代理。它是通过一系 

列的Web方法来实现的。 

图2演示了登录代理服务的实现过程。 

CurrentVersion ̄ExplorerkBrowser Helper Objects 

注册为一个子键。每当IE启动一个新窗口时,IE首先会 

在上述注册表位置查看是否有注册的LAP CLSID;如果找到, 

则为每一个注册的组件都分别创建一个LAP实例,并对实例 

进行初始化,建立交互连接。 

LAP对象在rE的主窗口将要显示时加载,而在窗口消失 

时卸载。每当打开一个窗口,就有一个LAP实例被创建。打 

开的IE窗口越多,加载的LAP实例也就越多。即使以命令行 

方式启动IE它也被加载。一般情况下,LAP实例的数目和运 

行的iexplorer.exe的数目一样多。 

1.3登录助手组成 

登录助手的功能主要由3个部分组成,分别是用户注册、 

账号关联和登录代理。 

l-3.1用户注册 

用户在登录代理服务中注册一个全局账号,以后这个全 图2登录代理实现流程 

局账号可以作为用户使用登录助手的惟一身份标志,利用这 

个全局账号,用户可以自动获取自己存放在登录助手中的各 

2.1 用户信息存储 

登录代理需要保存用户信息来进行登录服务,这些用户 

信息是存放在LDAP目录服务器OlD中的。为了实现方便快 

速的访问,其存储结构如图3所示。 

个Web系统的用户身份信息。 

l-3.2账号关联 

用户把自己在各个Web系统的账号(主要是账号和口令, 

在此称为局部账号)以及Web系统的登录URL登记到登录助 

手中,并统一存放在数据库中。 

这样,用户能够将自己在登录助手中的全局账号和在各 

个Web系统中的局部账号进行关联,以便用户在登录到登录 

助手后,系统能够半自动使用相关的账号/口令信息来访问具 

体的Web系统。 

l-3-3 登录代理 

用户首先在登录助手中登录,并获取权限令牌,以后可以 

使用这个权限令牌来获取自己存放在登录助手数据库中的局 

部账号信息。 

当用户访问在登录助手中已经登记的Web系统时,LAP 

从IE获得了其URL,传递给登录代理Web服务,登录代理从 

图3用户信息存放LDAP树 

在图3中,一共分了3层,第l层是ROOT,第2层是用户 

层(全局用户),第3层是Web系统层。在第2层按照用户划分 

数据库获得该用户在此Web系统中的身份信息并发送给LAP。 

LAP分别提示用户把输入焦点设置到用户名和口令输入框, 

由登录助手代为输入用户名和口令,最后用户按登录按钮就 

可以登录到该Web系统。 

由于各个Web系统登录方式、登录页面布局和密码加密 

方式的多样性,目前还没有办法做到自动化的代理登录,只能 

的目的是考虑到每个用户需要访问的Web系统的数量是有限 

的,而每个Web系统的用户的数量相对就较大。所以这样的 

结构可以加快检索的速度。 

在第3层中,存放的是每个用户在特定的Web系统中的 

・——

843・—— 

维普资讯

身份信息,主要包括: 

(1)用户的局部账号; 

(2)用户局部账号在该系统中的密码: 

(3)被代理的URLS: 

(4)用户权限; 

(5)是否在线; 

(6)超时时间; 

(7)其它。 

2.2用户登录 

用户打开m的第一个窗口时,需要通过Web服务登录到 

服务器。这个工作由LAP向代理服务发送一个SOAP消息 

来实现。 

发送的SOAP消息格式如下(为简便起见,省略了数字签 

名和其它部分,只列出SOAP消息的主体部分,以下同): 

<soap:Body> 

<knockthcdoorxmlns=”http://tempuri.org/”> 

< ̄eflD>UserlD</usedD> 

<user

_

pw>¨¨¨ </user

_

pw>//MD5加密数据 

<IPAddr>xxx.xxx.xxx.xxx</IPAddr> 

</knockthedoor> 

</soap:Body> 

该SOAP消息中封装了3个元素,分别是:用户ID、口令 

及用户当前计算机所使用的IP。代理服务接收到此消息后, 

解析出这3个元素,根据userID和user

_

pw验证用户身份的 

合法性。 

如果身份合法,则在服务器端生成一条临时记录,建立一 

个用户会话。完成这一系列工作之后,代理服务向 返回 

个SOAP应答,其中有一个SessionlD,这是用户在此登录期 

间的会话标识,称为权限令牌。返回的SOAP消息格式如下: 

<soap:Body> 

<knoekthedoorResponse xmlns=”http://tcmpuri.org/。’> 

<knockthedoorResult>SessionID</knockthedoorResult> 

<IPAddr>xxx.xxx.xxx.xxx</IPAd ̄> 

</knockthedoorResponse> 

</soap:Body> 

LAP在接收到这条消息后,表示用户已经成功登录到代 

理服务,并开启了一个活跃的会话。 

如果用户身份非法,则返回一条表示用户身份没有确认 

的SOAP消息,LAP接收到后提示用户身份非法。 

2.3登录代理 

当用户在IE窗口定向到某个URL时, 会截获该请 

求,并检查这个请求的URL是否在需要进行代理的列表中。 

如果在,则将这个URL封装到一个SOAP消息中,并发送给代 

理服务,否则不进行任何处理。 

该消息中除了URL地址,还有用户的令牌(SessionlD),消 

息格式如下: 

<soap:Body> 

<LoginRequest xmlns=”http://tempuri.org/'’> 

<authToken>SessionlD</authToken> 

</requestedURL> 

・——

844・—— 

</LoginRequest> 

</soap:Body> 

代理服务接收到此SOAP消息后,通过SessionID确认用 

户的合法性,并判断该SessionID是否已经登录到该系统,如 

果已经登录则返回一个空的SOAP消息,否则使用Refresh 

authTokcn方法刷新用户会话,然后在数据库中检索该用户访 

问该URL所必须的登录数据,包括URL文本,账号名、口令以 

及其它信息。最后把用户账号名和口令加密封装到一个SOAP 

消息中发送给LAP。 

消息格式如下所示: 

<soap:Body> 

xmlns=”http://tempuri.org/'’> 

<USerID>UserH)</userID> 

<user

_

pw>PassWD</user

_

pw> 

<authToken>SessionlD</authToken> 

</LoginR ̄uestResponse,> 

</soap:Body> 

LAP在接收到这个消息以后对用户账号、口令和令牌进 

行解密。然后,分别提示用户把输入焦点设置到用户名和口 

令输入框,由登录助手代为输入用户名和口令,然后用户按 

登录按钮就可以访问到该Web系统了,于是一次代理过 

程结束。 

3登录助手插件实现技术 

3.1实现IObjectWithSite接口 

在IE的工作过程中,LAP会接收到很多事件,比如IE导 

向到新的地址、用户点击“前进”或者“后退”按钮、复制新的窗 

口、退出浏览器等。LAP可以在这些事件的响应中实现与浏 

览器的交互。 

为了监视IE的事件,LAP对象需要建立一个有权限的并 

且是基于COM的通讯通道。为达到这一目标,LAJP实现了一 

个名为IObjectWithSite的接口。 

IObjectWithSite接口为对象跟它所在的容器现场之间进 

行通信提供了一种简单方法。一般说来,对象与容器现场通 

信的惟一途径就是借助于IOleObjeet::SetClientSite方法;而 

IObjectWithSite接口则为简单对象提供了一种轻量级的现场 

定位机制,它比前者更容易使用。IObjectWithSite接口包括两 

个虚方法“ : 

SetS :通过重载该方法,容器可以将其现场的IUnknown 

指针传递给对象。 

GetSite:通过重载该方法,对象可以获得最近传给IObje ̄t- 

WithSite::SetSite的现场变量。 

对象一旦实现了IObjectWithSite接口,就可以从它所在的 

容器那里获得现场变量的接口指针。然后,对象就能直接与 

现场通信了。 

利用这一原理,可以通过实现IObjectWithSite接口,使IE 

窗口向LAP对象传递一个指向它自己的IUnknown接口的指 

针。随后, 对象就将这个指针保存起来,并通过它获得其 

它所需的接口,如IConnectionPointContainer、IWebBrowser2和 

IDispatch等。 

维普资讯

根据实际需要,只要重载SetSite方法变可以实现。SetSite SOAP消息当中,发送给代理服务。Refi'eshSession的实现类似 

的函数声明如下: 于前面提到的CheckURL方法。 

STDMETHOD(SetSite)(IUnl【nown pUnkSite) 

SetSite的参数实际上指向的是浏览器组件。在SetSite实 

4结束语 

现中,首先保存浏览器组件指针,然后将该LAP对象向浏览器 本文描述了一个基于Web Services的登录助手的系统设 

注册为事件处理器。最后,LAP对象就能收到URL改变的消 计方案。这一方案结合中小型企业、事业单位、学校等机构的 

息并进行处理了。 

网络化建设中的普遍现状,为多系统的整合使用提供了一条 

3.2实现Dispatch接口 

简单易行、可扩充性和可维护性好,而且工程成本又相对低廉 

在接口IDispatch的IDispatch::Invoke方法中可以实现事 的解决途径。当然本方案也有缺点,如没有对数据进行整合, 

件响应处理逻辑(各个事件在ExDispID.h中进行了定义)。LAP 

无法实现全自动的单一登录等。 

对象会接收到各种各样的事件,这里只需要响应IE导向到一 该方案还可以根据具体的项目需要进行适当的扩充。例 

个URL之前发出的事件DISPID BEFORENAVIGATE2,以此来 

如,可以增强登录助手插件的功能,使之不仅能够侦听浏览器 

实现截获用户发出的HTTP请求的功能。 窗口的导航动作,还可以让用户对浏览器加锁,以保证只有在 

具体实现过程如下: 

登录状态下才能访问某些站点等。 

LAP对象截获IE发出的HTTP请求,然后调用自己定义 

的名为CheckCurrcntURL的方法,以检查该URL是否可以被 

参考文献: 

登录代理服务所代理。 [1】 韩伟。范植华.基于SAML的单点登录技术在Web服务中的应 

如果可以被代理,那么就调用CheckURL方法向代理服 

用研究[J].计算机工程与设计,2005,26(3):634-636. 

务发送SOAP消息以获取当前页面的用户账号和口令。并分 

[2] 丁立新,赵曦滨,顾明.基于I ̄rberos的Web单点登录研究[J]. 

别提示用户把输入焦点设置到用户名和口令输入框,由登录 

计算机工程与应用,2005,41(14):124-126. 

助手代为输入用户名和口令,然后用户按登录按钮就可以访 

【3】 李润求,谭立球.校园信息门户单点登录系统的实现【J].通信学 

问到该Web系统。 

报,2005,26(B01).'174.177. 

3.3封装SOAP消息 

[4】 茅维华,金宝.Web应用单一登录的类Kerberos实现[J].计算机 

CheckURL方法的功能就是封装一条SOAP消息,并发送 

应用与软件,2004,21(2):87.90. 

给登录代理,然后等待接收登录代理的应答SOAP消息。本 

[5】 李小平,阎光伟.基于公开密钥基础设施的单点登录系统的设 

方法借助于Microsoft发布的SOAPToolkit3.0中的SoapSeriali. 

计【J].北京理工大学学报。2002,【2):23.27. 

zer等对象来实现。 

[6】 邱航,权勇.基于Kerberos的单点登录系统研究与设计[J].计算 

在CheckURL方法中,首先要建立一个SOAP连接(Soap- 

机应用,2003,23(7)-142.144. 

Connector),然后实例化一个SoapSerializer对象,将需要发送给 

[7】 张辉,杨岳湘,汪诗林.数字校园中基于LDAP的统一用户身份 

登录代理的各个元素依次封装成SOAPElcrncnt。pConnector-> 

管理技术研究[J].计算机工程与科学,2005,27(1):14-16. 

BeginMessage 0表示开始序列化SOAP消息;而pConnector-> 

【8]Web Service Case Study.统一身份认证服务[EB/OL].http:// 

EndMessage0则表示序列化已经完成,并将此消息按照Soap. 

WWW一900.ibm.com/developerWorks/cn/webservices/ws.case. 

Action属性指定的URL发送出去。之后,再实例化一个Soap— 

study/part4/index.shlm1. 

Reader对象,用于读取代理服务返回的SOAP消息。 

[9】Microsoft.统一身份认证服务[EB/OL].http://www.passport. 

3.4定时刷新会话机制 

com/. 

为了保证登录助手的安全,如果用户在登录到登录助手 

【10]Microsoft.Visual studio.NET MSDN[EB/OL].http://msdn. 

以后,系统会设置一个有效的时间expireTime,如果在expire. 

microsoft.com/library/en-us/com/hlm/oin c2o550.asp. 

Time内没有任何针对浏览器窗口的操作,代理服务则认为此 

[1 l】MicrosoR.Visual studio。ENT MSDN:SOAP【EB,0U.hap:// 

用户会话已经失效,用户需要重新登录才能够继续使用代 

msdn.microsoft.com/webservices/understanding/specs/default、 

理服务。 

aspx?pull=/library/en—us/dnglobspec/htmi/wsmsgspecindex. 

为此,m窗口的LAP会每隔1分钟就向服务器发送一条 

sap. 

SOAP消息m;服务器接收到消息m后,立即给expireTime延 

[12】Satoshi Hada.SOAP security extensions:Digital signaturc[EB/ 

长1分钟,如此可保证用户持续处于活动会话状态。直到用 

OL].http://www一900.ibm.com/developerWorks/cn/webserviees/ 

户关闭了所有的浏览器窗口,或者在一定时间内没有任何针 

WS—soapsec/indexeng.shlm1. 

_

对浏览器窗口的操作。 

[13】于国防,王军号.增强型Web登录安全策略研究[J].计算机工 

可以使用SetTimer函数创建一个计时器。由于LAP对象 

程与设计,2005,26(12):3276.3277. 

在生存期间需要不停地使用计时器向代理服务发送同步信号, 

[14】郑岚,陈奇.基于LDAP的统一访问控制系统的设计与实现[J]. 

使用回调函数MyTimerProc来处理WM

_

TIMER消息。 

计算机工程与设计,2005,26(7):1865.1867. 

在MyTimerProc中,首先要获取用户使用的IP参数,然后 

[15】赵旭东,罗军舟.LDAP目录服务的实现及在网络教育系统中 

调用RefreshSession方法,将用户II)和IP参数封装到一条 

的应用[J].计算机工程与设计,2005,26(12):3201.3204. 

・——

845・—— 

本文标签: 登录用户助手