基于CAS的校园网单点登录系统实现

时间:2022-10-06 01:14:10

基于CAS的校园网单点登录系统实现

摘要:在网络技术日益发达的今天,高校校园网中出现了越来越多的应用系统,各应用系统之间没有采用统一的用户账号,密码和相同的身份验证方式,导致用户无法实现登录一次,多系统漫游,为了解决这个问题,该文提出了一种基于CAS-中心认证服务技术的单点登录及统一身份认证系统,对用户实行统一的身份认证,从而实现将应用系统孤岛连成应用系统岛群。提高了用户体验,并为将来的应用数据对接打下了坚实基础。

关键词:校园网;CAS;单点登录

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)05-0074-02

随着“互联网+”时代的到来,校园网的发展已经走过二十多个年头,学校在校园网内部建设了各种各样的业务系统,这些业务系统都是独立开发的,采用的技术和数据标准都不一致。例如财务会计、协同办公、教务管理、图书管理等等。系统管理员必须为每套系统导入用户身份信息,当用户信息发生变化时,需要到每个系统中去修改身份数据。这种情况在每个高校的校园网建设过程中都普遍存在。

我们需要找到一个解决方案能更加有效地管理校园网的业务系统,必须简化系统账号管理,减少用户操作,这是所有校园网遇到的共性问题。本项目的研究意义也就在此,旨在为校园网用户找到一个好的解决方案,实现单点登录和统一身份论证。

1 CAS技术概况

CAS(Central Authentication Service C 中心认证服务)主要是为了让内部的多个不同业务系统能协同工作并通过统一的身份认证系统验证用户合法性[1]。通过CAS认证的用户将使用CAS认证系统颁发的证书在CAS认证范围内的各系统之间自由访问,不需要再次登录[2]。

从系统结构上看,CAS 包含了CAS Server(服务端)和 CAS Client(客户端)两个部分。CAS Server 需要独立安装部署,主要用来负责对用户进行认证;CAS Client 负责处理对客户端受保护资源的访问请求[3]。图1是 CAS 的认证机制。

2 单点登录流程

在进行单点登录认证时,主要涉及Session和Cookie这两个概念[4]。Session是指一个会话的连接保持时间,如果用户长时间未操作,系统就会自动断开这个会话连接,以便释放资源也可供其他用户连接。Cookie就是应用系统在客户机留下的一串标识资料,通过这个标识可以告诉应用系统该用户曾经登录过[5]。

由图2可以看出,在进行用户身份认证时,CAS Server会先检测是否存在Session,如果没有检测到Session,就会检查客户端是否存在Cookie。如果Cookie存在,就继续检测Cookie有没有过期,如果Cookie失效,则返回登录页面;若有效,则CAS Server根据Cookie上的信息进行身份验证,验证通过后创建一个新Session,进入应用系统。这样既可以避免用户反复登录验证,也可以更有效地利用资源。

3 系统实现

系统设计中主要包括以下两方面的内容:一是当输入某个应用系统地址,重定向到统一认证界面的URL地址上,身份认证通过后转回该应用系统,此时同时进入其他应用系统也是无需认证直接进入的;二是用户直接访问统一身份认证界面,身份认证通过后,在统一门户平台上列出各应用图标,点击图标统就可以直接进入各应用系统。以下是实施方法:

1)将CAS Client Jar客户端包放在需集成的应用系统的WEB-INF/lib文件夹下。

2) 在需集成的应用系统中增加XML配置文件。

在集成系统的WEB-INF/classes目录下新增casFilterConfig.xml配置文件,,代码演示如下:

http:///cas

http:///cas

localhost:8181

false

false

\.js$

\.xml$

……

\.xsl$

3) 修改应用系统登录入口。

此处是单点登录实现的关键,有两种方案,分别介绍如下:

①方案一:保留原有系统的入口,新增单点登录入口,新增的入口与统一门户集成

在需集成的应用系统的WEB-INF目录下的配置文件web.xml中,加入CAS Filter相关的过滤器配置内容,代码如下:

EcjtuCAS Filter

cn.edu.ecjtu.cas.tp.sso.client.filter.DefaultCASFilter

EcjtuCAS Filter

/ecjtucas.jsp

本次系统设计采用JSP语言,以上是新增的入口配置文件ecjtucas.jsp,放置在应用系统的根目录下。

接下来是新增入口的代码实现:

引入cas认证类代码:

/*认证类引入*/

CASFilterRequestWrapper reqWrapper=new CASFilterRequestWrapper(request);

String userID = reqWrapper.getRemoteUser(); /*获得正在验证的用户账号*/

登录代码:

首先获得正在验证的用户帐号,然后在应用系统中判断这个用户是否存在:如果存在,则认证通过;如果不存在,按照应用系统业务逻辑处理。认证通过后,从request返回的参数中获取redirectUrl:如果为空,则跳转到应用系统的首页;如果不为空,则跳转到参数值中的页面。

String Redirecturstrl = request.getParameter("redirectUrl");

if(Redirecturstr != null&& Redirecturstr.length() > 0) {

response.sendRedirect(Redirecturstr);

}else{

response.sendRedirect("http://*");

}

②方案二:封闭原有登录入口,统一使用CAS认证入口。

在需集成的应用系统WEB-INF目录下的web.xml文件中,加入CAS Filter相关的过滤器配置。

应用系统统一CAS认证入口代码如下:

/*认证类引入*/

CASFilterRequestWrapper reqWrapper=new CASFilterRequestWrapper(request);

String userID = reqWrapper.getRemoteUser();

/*改变原有的帐号密码获取方式,采用统一认证获取账号密码*/

4 结束语

本文详细介绍了CAS-中心认证服务技术的原理及工作流程,并采用CAS技术设计与实现了单点登录和统一身份认证。用户只需在业务系统或统一认证界面登录一次,即可在多个应用系统之间来回切换,不需要再次验证用户账号及密码。目前,统一身份认证已成功部署,并正常运行。本系统的不足之处在于,针对各应用系统的情况要导入客户端包,并进行一些代码修改,在应用系统协调方面仍存在问题,需要进一步思考完善并解决。

参考文献:

[1] 张剑. 基于CAS的高校单点登录系统研究及设计[J]. 软件导刊:教育技术,2015(7): 60-62.

[2] 苏星晔,徐方南. 统一身份认证技术研究[J]. 中国新通信,2015(2):58.

[3] 杨薇,刘阳. 基于CAS的统一权限平台的设计与实现[J]. 舰船电子工程,2014(1):112-115.

[4] 吴晓洁. 基于CAS的单点登录系统的实现[J]. 科技信息,2013(26):290-291.

[5] 董丹. 高校自主开发校园信息化平台研究[J]. 吉林省教育学院学报:中旬,2013(12): 77-78.

上一篇:关于综合布线教学研究 下一篇:Chm文档在计算机课堂教学中的应用