单点登录技术在J2EE企业web中的研究与应用
2010-09-19王颖
王颖
(营口职业技术学院,辽宁 营口 115000)
单点登录技术在J2EE企业web中的研究与应用
王颖
(营口职业技术学院,辽宁 营口 115000)
介绍了基于ticket凭证策略和基于web请求代理策略的两种单点登录系统方案,并分析其优缺点;在实际项目中,结合两种策略的优缺点,并使用web services技术构造了一种应用实际的单点登录系统。
单点登录系统;ticket凭证;web请求代理;web services
0引言
企业在信息化进程中,web应用需求越来越大。企业往往是依据实际需要,构建不同功能侧重的信息系统,如办公自动化系统、邮件系统以及数据管理系统等等。而对于任一个web而言,首要的是实现用户的身份认证。传统的架构方法是这些系统都各自建立自己的实现用户身份认证的登录系统。如此一来,在各个应用的开发阶段,需要为每一个系统设计开发登录系统,这势必造成一定的人力和资源的浪费,影响开发进度减低工作效率;而在用户使用时则每转换一次站点需要重新登录,无论于管理者还是用户都存在很大不方便。为了解决这些问题,单点登录(Single Sign-On)系统就应运而生了。
1 单点登录技术综述
单点登录技术在Web应用中的实现策略[1]常见的主要有两种:一种是基于访问票据(Access Ticket)的单点登录解决方案,一种是基于Web请求代理[1]的单点登录解决方案。下面就这两种方案介绍和分析对比。
1.1 基于ticket凭证的策略
这种策略[3]的思想是在登录服务器和应用系统之间通过某种ticket建立起信任关系。这种基于凭证策略的主要目标是通过对应用系统进行改造使其接受访问凭证,对用户的验证工作由SSO服务器来负责,应用系统的责任只是向登录服务器验证访问凭证的有效性和合法性。基于ticket凭证策略的单点登录系统模型如图1所示。
图1 基于Ticket凭证策略的单点登录系统模型
其工作原理及流程是:
1)首次登录时,用户向登录服务器提供用户名和口令证明自己的身份;
2)登录服务器验证用户的合法性和有效性后,向用户发放访问凭证;
3)用户访问应用系统;
4)应用系统向用户索要访问凭证;
5)应用系统向登录服务器验证访问凭证的合法性和有效性;
6)如果用户提供的访问凭证有效合法,则应用系统可以向用户提供应用服务;否则应用系统拒绝用户的服务访问请求。
这种方案的优势是很明显的,它构建了一个完整功能的单点登录系统,从访问凭证的设计,到用户与登录服务器的通信交互以及应用系统与登录服务器间的数据传递等,这些趋向于形成一个单点登录的标准,需要各个应用系统去遵循。同时其缺陷也是显而易见的,这不但需要构建一个管理用户的登录服务器,还要对各个应用系统原有的用户管理和登录系统进行较大规模的改造,这种方案的代价势必会很大。
1.2 基于Web请求代理的策略
这种策略[4]的思想是建立统一的代理服务器来接受所有的应用站点的Web请求,由这个代理服务器来统一处理用户的认证和登录。这里需要明确的是,尽管这个代理服务器统一代理所有的Web请求,但实际上其真正进行处理的只是用户认证方面的相关请求,对于已认证用户的Web请求,仅仅是通过URL将请求转发给应用系统。所以代理服务器的主要功能是提供认证服务。如此一来,这个代理服务器从真实功能上讲也仅仅是一个登录服务器。基于这种策略,当用户访问某应用站点时,Web请求将先发送给代理服务器,用户完成认证后再由代理服务器将请求转发给应用系统,并将用户的有效合法身份信息含在请求中一并转发给应用系统。Web请求代理部署模型如图2所示。
图2 基于Web请求代理的单点登录系统模型
基于Web请求代理的单点登录策略在实现认证时也需要建立代理服务器与应用系统间的信任关系,以便认证后的用户身份能够被应用系统承认。在这点上与ticket思想是非常相似的,但其实现机制相对简洁,结构框架也更灵活一些,对原有Web应用的改造较少,这就比较适合基于已有应用系统的集成实现单点登录。
以上对当前基于Web的单点登录的两种策略进行了分析,可以看出,两种实现方案各有优缺点。相比较之下,要在已有应用的基础上集成实现单点登录,基于Web请求代理的方案相对存在一些优势。基于这种策略,对原有应用系统的改造代价较小,实现相对容易一些,目前较多数的单点登录系统都倾向于采用这种方案来实现单点登录。
2 单点登录系统应用举例
在为某较大规模的通信公司设计和开发综合信息系统时,就面临三个不同功能应用系统的统一认证和登录问题。结合流行的单点登录策略,我们设计了适应于该综合系统的单点登录系统。
2.1 单点登录系统总体设计
应对该综合信息系统对单点登录的需求,我们首先分析该综合系统的三大应用系统的前期构建情况:这三个应用功能相对独立,几乎没有相互依存度,并且各自存在独立的身份认证登录系统。这样的应用背景要实现单点登录,考虑工期等因素,我们首先考虑采用Web请求代理的策略,并考虑到Web应用中session机制的方便性,考虑使用sessionid作为登录认证的凭证。这样一来就结合了以上两种策略的优势,构建起便捷的单点登录系统。具体单点登录模型如图3所示。
图3 单点登录系统模型
2.2 用户综合管理设计
从模型我们可以看出,中转程序充当了Web请求代理的角色,实现对用户身份的认证,实现登录管理的功能。这个中转程序也要对三个系统的用户实施统一的管理,以便为统一的登录认证奠定基础。由于这三个应用系统都各自存在相对独立并功能完备的用户管理模块,可以考虑采用web Serivces技术对三个应用系统实施统一的用户管理。
SOAP/Web Services技术的出现将Web应用推向了一个新的阶段,那就是以服务为导向的Web应用。它允许各个不同的公司在Web站点上部署和自己公司的业务相关的应用程序和系统,通过一些标准的传输协议(如HTTP),和数据封装的形式(如XML)进行基于Internet分布式服务的传递和通讯,同时要求这些发布的应用程序与企业内部所使用的技术和系统无关。这样它在技术上解决了不同操作系统、组件模型、开发工具和程序语言和应用系统之间的集成问题。尤为重要的是能够根据用户需求提供快捷的服务,克服了以前因Internet上信息过于泛滥、用户获取所需信息成本过高、效率过低的状况。Web Services还有一个重要的特性是其所提供的服务不仅是面向人,还可以面向其它应用系统。现有的Web网站也可以认为是面向服务的,但这种服务仅仅可以提供给人使用(只有人类才可以读懂浏览器下载的页面)。而新一代的Web Services[5]所提供的服务应能被机器所读懂,例如其它应用程序及移动设备中的软件系统。
本系统的用户综合管理中,在添加、修改以及删除用户以及用户信息时,使用Web Services技术,在一个应用系统变更用户及信息时,将这些信息同时同步到两外两个应用系统的用户管理数据表中,实现全系统的用户信息的一致性。在这里使用的是org.appache.axis.client包中Call类和Service类,由Call类的Invoke ()方法实现远程方法调用,将用户变更的信息同步到其他两个应用系统用户表中。
2.3 单点登录认证设计
总体系统架构由三部分来组成:源(目的)应用程序(假设为Source)、中转程序(假设为Forward)和目的(源)应用程序(假设为Destination)。如上所描述两端应用程序互为源、目的应用程序,两者互访问将通过“中转程序”做转发。体现在图三模型图中,就是:
(1)from应用服务器1to应用服务器2;(2)from应用服务器2to应用服务器1; (3)from应用服务器1to应用服务器3;(4)from应用服务器3to应用服务器1; (5)from应用服务器2to应用服务器3;(6)from应用服务器3to应用服务器2; (7)to应用服务器1;(8)to应用服务器2;(9)to应用服务器3。
下面详细描述Source(Forward(Destination跳转流程的具体实现步骤和细节:
1)Source用户登陆,获取$sessionid,通过session.setAttribute(‘sessionid’,$sessionid)来保存值,并且联同loginname和$sessionid保存到登陆记录表中;
2)Source访问Forward,首先以session.getAttribute(‘sessionid’)的形式获取$sessionid,如果获取到的值为null表示未登陆或登陆超时,直接转发到Source的登陆页面;反之则携带loginname和$sessionid到登陆记录表中做签权校验;
3)若Source在Forward处签权成功,表示已有用户登陆,直接取出loginname和$sessionid以及其它相关信息转发到Destination做相应登陆等操作;否则,Source在Forward处签权失败,表示未登陆或登陆超时,直接转发到Destination的登陆页面,提示登陆操作;
4)Destination接到Forward的相应信息后,首先利用接收到的用户相关信息做登陆操作、用户信息入session等操作后,再将接收到的$sessionid以session.setAttribute(‘sessionid’,$sessionid)的形式保存在本地一份以便再次跳转;以上所述就完成了一次两系统间的调整登陆操作,两系统间互为源和目的地,所做操作均相同。
3 结语
单点登录系统为Web应用的集成和使用提供了很大的便利,是解决多门户问题的重要技术。单点登录系统的认证策略有很多种,其中基于Web请求代理策略和基于ticket凭证的策略是两种较为理想、应用也比较广泛的实现方案。本文结合这两种策略的优点,并使用Web Services技术,给出了一个单点登录系统的实际应用,较好的实现了三个应用系统的自由无阻漫游。但是这一应用还属于较低层次的应用,为了提高系统的整体安全性和可靠性,单点登录技术还应结合包括PKI证书技术、XML标准以及Web Services安全规范标准等技术综合实施,这将会是单点登录系统未来研究与应用的一个重要方向。
同时,分析构建的单点登录系统模型能够发现:单点登录系统存在一个很大的安全隐患,所有的访问都必须经过单点登录服务器(中转程序)进行身份认证然后转发,这使其成为全系统的重点部位,遭到致命攻击,势必造成系统整体瘫痪。因此加强单点登录服务器的安全保护,防范各种攻击成为必须重点考虑的问题。另外大规模的访问对单点登录服务器的连接承载能力也是一个考验,所以负载均衡的设计也必须在部署单点登录系统时予以考虑。
[1] Gilmore B,Farvis K,Maddock J.Core Middleware and Shared Serv icesS tudies Single Sign-on Report[EB/OL].http://www.jisc.ac.uk/index.cfm?name=prog_middss_studies.2004-9.
[2] D unneC.Build and Implement a SingleSign-onSolution[EB/OL]http://www-106.ibm.comldeveloperworks/Web/librarylwa-singlesign/30,2001.
[3] 林满山,郭荷清.单点登录技术的现状及发展[J].计算机应用,2004,24(s1):99.
[4] 续岩,季永志.单点登录技术在web应用中的研究与实现[J].计算机工程,2006(10):271-273.
[5] 李新力,梁立新.基于EJB 3.0和Web Services的Java应用开发[M].北京:电子工业出版社,2008:68-90.
责任编辑:吴旭云
Research and application of the single sign-on technology in web of J2EE enterprises
WANG Ying
(Yingkou Vocational Technology College,Yingkou 115000,China)
Based on ticket certificate strategy and web request broker strategy,this paper introduces two single sign-on system projects and makes comments on the advantages and disadvantages.It sets up a practical single sign-on system by using the technology of web services combining with the advatages of the two strategies in the practical projects.
single sign-on system;ticket certificate;web request broker;web services
TP391.09
A
1009-3907(2010)08-0070-04
2010-05-31
王颖(1974-),女,辽宁营口人,讲师,硕士,主要从事电子、计算机教学及研究工作。