单点登录系统集成应用子系统的方法探讨

来源:岁月联盟 作者:李学俭 时间:2010-08-30
     摘  要  从校园数字化角度阐述了单点登录系统实施的意义,分析了单点登录系统集成其它应用子系统的方法与验证过程,提供了实现方法的。    关键词  单点登录;集成;应用子系统 

1  引言

    目前,各高校都在加强校园数字化建设工作,其中包括两个方面,一方面是硬件设备的投入,另一方面是软件的投入与整合。我院在数字化校园工作中,重点加强了软件的建设与整合工作,在建设工作中,与华南理工大学合作开发了一套校园门户系统,并采用中央认证系统(CAS)将校园内其它应用子系统集成进来,实现了单点登录,大大加强了数字化建设的成效。

2  实施单点登录系统的意义

    随着互联网日益深入社会生活,以网站作为对外的展示窗口,进行内外信息交流,已成为必然的趋势。目前在高校信息化应用中,多套系统的存在已是很普遍的现象,有自行开发的,有向软件供应商采购的,这些软件涵盖面较广,从教学教务管理、人事信息管理、科研教研管理到毕业生就业管理,同一个用户可能在不同的系统中都有不同的帐号、密码及授权机制,这给应用的维护和管理带来巨大的维护成本。    单点登录(Single Sign On)是目前比较流行的业务整合的解决方案之一,旨在解决上面的这些问题,在多个应用系统中,通过用户的一次性鉴别登录,即可获得所需访问的应用系统的授权,在此条件下,管理员无需修改或干涉用户登录就能方便的实施希望得到的安全控制,其重要意义表现在以下两个方面:    (1)从用户的角度来看,能够一次登录多次使用,无须记住多套用户名和密码,并且在复杂的应用环境中,单点登录不仅不会影响到业务过程和响应时间,而且将互操作性方面的问题减少至最少。    (2)从管理员的角度看,相比于每个应用系统一套用户帐号的传统做法,采用单点登录之后管理员只需管理一套帐号数据,大大方便了管理;此外,单点登录采用ACL、SSL、LDAP等业界标准的安全技术,为所有集成的应用子系统提供安全授权,管理不会引起额外的工作或安全漏洞,加强了管理员的管理效能。

3  单点登录系统的验证过程

    本文采用我院同华南理工大学合作开发的中央认证系统(CAS)作为单点登录系统的实现,提供对Web层应用的统一认证与集成服务,软件采用J2EE技术进行实现,逻辑结构如图1所示。
图1  CAS系统集成方法结构图
     用户在访问CAS集成的子系统时,必须先通过认证系统的验证,验证示意图如图2所示。

图2 CAS认证流程
    图2中,客户端浏览器向某Web应用发出请求(过程1),Web应用程序向客户端提供单点认证系统 (CAS)的URL地址(过程2),客户端浏览器向认证系统发出认证请求(过程3),请求通过后认证系统向客户浏览器返回一个ticket(过程4),客户端浏览器便携带该ticket再次向Web应用程序发出请求(过程5),应用程序检测到客户的ticket后便将该ticket交由认证系统进行合法性的验证(过程6),验证通过后(过程7),Web应用系统便生成该客户的会话信息,开始有效的业务过程。

4  单点登录集成应用子系统的方法

    CAS支持多种方式为第三方系统提供认证服务,根据软件实现方式的不同以及软件供应商服务的差异,主要可以采用三种方法进行集成。

4.1  客户端方式

    采用客户端方式进行验证的应用子系统,在客户浏览器请求该应用系统时,通过http方式访问cas的验证服务,完成用户名和密码的校验,这种方式适合于Web应用系统,应用面较广,支持asp、php、asp.net以及jsp等技术,本文采用协同办公系统(OA系统)进行集成,该系统采用asp技术实现,集成的关键代码示例如下:    <%CAS_Server = "https://security.gdfs.edu.cn/cas/ " ‘//单点登录认证服务器的地址MyServer = "http://oa.gdfs.edu.cn/ioa/ "  ‘//协同办公应用系统的登录地址uid = Session.Contents("Netid") ‘//通过验证的标识if uid="" or isnull(uid) then    ticket = Request.QueryString.Item("ticket").Item   if ticket = "" or isnull(uid) then        url = CAS_Server+"login?"+"service=" + MyServer + "loginioa.asp"     Response.Redirect(url) ‘//如上图图2所示的过程2,跳转到认证系统索取ticket     Response.End  else     set http = Server.CreateObject("MSXML2.Server XMLHTTP.5.0")     http.setOption(2) = 13056     url =CAS_Server+"validate?ticket="+ticket+"&"+ "service="+MyServer+"loginioa.asp"     http.open "GET",url,false  ‘//认证服务器验证客户端的ticket     http.send()        resp = Split(http.responseText,vbLf)      if resp(0)="yes" then     ‘//ticket验证为有效          Session.Contents("Netid")=resp(1)    '// 保存到 session 中以备使用                  Session.Contents("usertype")= resp(2) ‘//用户类型          if usertype="teacher" then                               Session.Contents("teacherNO")= resp(3) ‘//老师账号          else               Session.Contents("studentNO")= resp(3) ‘//学生账号          end if          Session.Contents("userName")= resp(4) ‘//用户姓名          Session.Contents("chinaID")= resp(5) ‘//用户身份证号     end if end ifend if%>    上面代码所示验证过程严格参照图2的验证流程,Web应用系统在CAS验证用户身份通过后,将用户信息写入Web应用的session中,以便该Web应用的其它页面进行业务调用。

4.2  定制实现

    在校园范围内现有的应用系统中,有部分应用系统不支持标准的认证方式,或者采用其它方式集成存在操作上的困难,此时需要定制实现,定制的中心思想在于在认证系统中增加一个处理页面,用户通过验证之后将用户帐号信息传递到中间代理,由该代理获取用户对应的身份数据,并返回给验证系统做页面跳转,进而登录到应用系统中,处理步骤如图3所示。    图3中,CAS承担着验证与应用代理的角色,当收到Web应用程序发出的验证请求时(过程2),采用socket加密机制获取Web应用系统对应的用户帐号数据(过程3至6),然后采用form的方式进行跳转(过程7),最后顺利开展Web应用系统的业务过程。

 


4.3  WebService方式

    Web服务是一种部署在Web上的对象/组件,具备完好的封装性,对于调用者来说,只要Web服务的调用界面不变,Web服务的任何变更都是透明的,具有良好的松散耦合性,此外Web服务使用规范的协议进行服务的描述、传输与交换,完全屏蔽了不同软件平台的差异,具有高度的可集成性。    本文上面的两种集成方式适合于Web应用系统,但在整合过程中,校园内还存在其它的桌面应用程序,这些应用系统基本采用C/S模式开发的,采用上面的方式进行集成显然不合适。为此本文采用Web服务的方式,即在认证服务器上部署用于统一身份验证的Web服务,桌面应用程序在进行集成时,只需调用该Web服务中的业务模块进行帐号验证即可,这种验证方式支持几乎全部已知的编程开发环境,具有较强的通用性。

5  结语

    采用CAS作为单点登录系统的实现,阐述了认证的详细过程,详述了采用CAS集成不同应用系统的方法。这些方法在我院进行软件系统整合中均有成功的应用,具有较高的价值。

参考

[1] 徐福仓等.政务内门户单点登录系统的实现.机系统应用,2007(1):99-101[2] 李席广. 基于LDAP的统一身份认证管理系统的设计与实现[J]. 科技信息(学术研究),2007,(19):206-207[3]柴晓路.架构web service—为什么需要web服务. http://www-128.ibm.com/developerworks/cn/webservices/ws-wsar/part1/[4] 高勃.单点登录技术的概述[J].科技信息,2007,(03):127-129

图片内容