基于JASIG CAS统一认证平台的设计和实现
【技术应用】萼于JA一型罩堑二坠鎏垩台型和实现基孑JA—SIGCAS统一认证亚台的"L又t3计和实坝口蔡永州吴敏摘要:在教育、政府、企事业等大型机构中.存在系统多、管理分散的问题。单点登录(SSO)是
【技术应用】萼于JA一型罩堑二坠鎏垩台型和实现
基孑JA—SIGCAS
统一认证亚台的"L又t3计和实坝
口蔡永州吴敏
摘要:在教育、政府、企事业等大型机构中.存在系统多、管理分散的问题。单点登录(SSO)是解决大型机构内多个应用系统统一用户身份认证的有效技术。JA—SICCAS使用Java实现,是用于Web的SSO协议。为了实现多网站统一认证,分析单点登录服务软件JA—
SIG
CAS和CAS认证过程。并结合平台功能需求和安全性考虑。设计和实现基于JA—SIG
CAS的统一认证平台,并针对应用系统给出相应的集成方案。
关键词:CAS;JA—SIG;SSO;统一认证;单点登录
中图分类号:C.434文献标识码:A文章编号:1009—519512010101-0068-05
doi:10.3969/j.issn.1009—5195.2010.01.016
随着互联网络的发展,越来越多的Web应用程序用于支持各种机构的日常工作。在一些教育系统、政府和企事业组织中,由于不断地引进各类系统。不同系统又分别具有独立的用户管理和认证子系统。因而管理不同系统用户的工作随着系统和用户数量的增长越来越繁重。对于系统终端用户而言。同一机构的不同业务系统需要重复注册和认证,不仅使用上不方便并且容易造成混乱。因此,提供一个统一的用户身份认证机制。进行统一的用户信息(登录名、用户密码以及各系统公用的用户属性信息)管理是十分必要的。单点登录(Single
sign—
统一用户注册管理以及应用系统集成的需求问题。
一、JA—SIGCAS及CAS认证过程
JA-SIG
CAS(又称YaleCAS@)基于一个安全
可靠的认证协议为开发者提供了一个企业级的单点登录解决方案。它支持包括数据库、LDAP、X.509证书、JAAS在内的多种后端认证方案;提供跨平台、多语育的客户端代码库支持。大部分主流Web开发语言(包括Java、PHP、ASP.NET、Perl、Python等)都有相应的CAS客户端代码库可供使用;此外,CAS是一个开放源码软件.提供友好的许可证。
CAS中心认证服务被设计成一个独立的Web应用程序,用户通过登录URL(I.DginURL)、验证
URL(Validation
on,简称SSO)就是为解决多系统统一认证问题而产生的技术。统一认证服务(Central
Authentication
Service.简称CASao)是其中一种用于Web的SSO协议,基于此协议的服务器软件主要有两种实现:使用Java实现的JA-SIGCAS和使用Ruby实现的
Ruby
CAS—Server⑦。
URL)以及注销URL(Imgout
URL,
可选)对其进行访问。CAS认证过程包含两类:Web应用服务认证和代理认证,如图1。
目前基于CAS协议单点登录系统的研究并不少见,但大多侧重于协议本身和认证接口的分析。笔者在已有研究的基础上提出一个完整的统一认证平台解决方案。此平台除采用定制扩展版本的JA—SIGCAS作为单点登录认证服务器外.还提供统一用户注册和编辑模块(针对终端用户)、统一用户管理模块(针对平台管理员)以及应用系统接口模块(针对应用系统开发人员),从而解决多系统的单点登录、
图1
~
,
’●一一-●
CAS认证流程示意图(翻译自CAS架构文档)
・68・
现代远程教育研究I
2010年1期,总103期I
万方数据
,基于JA—sIG
CAS
~认证平台的设计和实现【技术应用】
1.Web应用服务认证
。份,代理应用必须通过PGT向CAS索要PT,在拿到这是用户在访问受保护Web应用服务所需要的认证。在此过程中CAS使用如下两种票据:TGC
(TicketGranting
Cookie。CAS发放给用户的身份凭
证。一般情况以Cookie形式发放,相当于用户与CAS之间的会话ID.CAS通过检查TGC确定用户是否已经登录并通过身份)和SST(Service
Ticket,
服务票据。CAS发送给相关应用服务的用户身份凭证。为了防止“中间人”攻击的发生。ST被设计为一次性票据,在一次验证过程后立刻失效)。
完整的Web应用服务认证在图l中的流程表
示为:1-+2—3_珥。步骤l,用户浏览器向受保护
Web应用服务发送初始化请求。步骤2,应用将用户重定向至CAS进行认证。并在URL中附加服务ID。若CAS检测到TGC,进行下一步;若没有,提示用户输入用户名、密码登录,在用户成功登录后发放TGC并进入下一步。步骤3,CAS将用户定向回Web应用地址,并在URL中附带ST。步骤4,应用将ST交给CAS进行验证.得到正确的用户身份。
2.代理认证
用户可能需要访问一些浏览器不能直接访问的资源.典型情况如非Web服务提供的资源.这就需要进行代理认证.借助一个Web应用服务作为用户身份代理对目标服务进行访问。除1’cC和ST外,代理认证还需要如下票据:
(1)PT(Proxy
Ticket):代理票据。代理应用通过
Pr向目标应用表明代理身份,目标服务在拿到Frr之后需通过CAS验证其有效性。
(2)PGT(Proxy
Granting
Ticket):由CAS发放
给持有效ST的代理应用的票据。代理应用凭P(汀从CAS获得Prr。此票据与目标服务、认证用户身份形成唯一关联。PGT是一次性票据。
(3)PGTlOU(ProxyGrantingTicketIOU):可看
作PGT的索引。代理应用必须能自行维护PGTIOU和pGT的对应关系表.当PGT失效后,对应的PGTl0U也同时失效.可以从对应关系表中删除。
代理认证在图l中的流程表示为:l一2—3—
4-q一5。和Web服务认证相比,代理认证多出了
获取和验证PT的步骤。在图1步骤2中,代理应用除发送服务ID外还必须传递回调地址参数(p舀Ud)。相应地,在步骤4中,CAS的返同信息中增加了PGTIOU,同时通过回调地址将对应PGT发送给代理应用;之后,为了向目标服务表明代理身
万方数据
Pr之后,进入步骤4a和5a,完成代理认证过程。
二、基于JA—SIGCAS的统一认证平台设计
该统一认证平台的设计目标是为大型机构提供一个从用户注册到系统集成的完整的解决方案,因此需要如下功能:第一.支持多个不同域名站点的单点登录,如A.corn、B.corn、C.corn等;用户通过A站点登录之后。在未注销的情况下访问B站点不需要再次输入用户名和密码。单点登录的认证协议必须从设计上保证安全性。第二。使用统一的关系型数据库作为用户数据存储后端。第三。为服务站点用户提供统一的注册、信息编辑以及密码取回等操作界面:并为统一认证平台管理员提供统一用户管理功能。第四,在实现上述功能的同时,提供一套完整的应用系统集成方案。为应用系统开发人员提供基于SOAP的用户注册和信息更新接口。
根据上述功能需求,我们对平台进行了功能模块划分。确定了平台架构设计(如图2所示)。虚线框内为统一认证平台的组成模块。为了防止外部应用直接读写用户数据库带来的安全隐患.我们将用户数据库直接读写权限控制在统一认证平台以内。外部系统读写相关信息可以通过CAS协议、SoAP接口以及浏览器跳转.通过平台预定义模块进行相关操作。这三种方式均在认证平台的控制范围,因此可以从根本上保证用户数据的安全性.防止由于外部应用系统的错误操作带来的安全问题。此外.
对平台的所有访问活动均通过H册进行.5个模
块均部署同一域名下,共用一个SSL证书,以确保
认证信息在传输过程中的保密性。
圈2基于JA—SlGCAS的统一认证平台架构
・69・
,【技术应旦!量!!垒二!l里堂二坠里垩鱼型婴
三、基于JA—SIGCAS统一认证平台的实现
在上述模块中,除JA-SIGCAS外。其余模块均使用开发效率较高的PHP实现。下面我们就各组成模块进行介绍:
1.豫户数搪薄
JA—SIG
CAS支持多种后端认证方案,我们选
择具有跨平台运行能力的MySQL数据库作为统一用户信息数据库。
2.JA-SIGCAS
JA—SIG
CAS为统一认证平台提供单点登录和
代理认证服务,在部署CAS过程中。我们对其做了必要的定制和修改。
首先,定制后端认证方案。CAS以替换认证处理器(AuthenticationHandler)的方式设定不同的后端认证方案,使用MySQL数据库作为用户存储后端涉及到基于JDBC接口的认证处理器的一系列相关配置。另外,为了增强用户密码安全性,我们为平台使用的认证处理器增加了定制的密码加密器
(Password
Encoder)。
其次,修改CAS的H1-I-P客户端代码。允许代理应用使用自签名的SSL证书。为了提高信息传输过程中的安全性。CAS协议规定CAS服务器和客户
端之间的通信必须通过安全链接(H删)进行。为
了执行这项规定,CAS服务器在与代理应用的通信代码中强制进行SSL证书的合法性检查。但在实际使用中.为使用不同域名的每个代理应用购买SSL证书成本是非常高的.另外由于CAS服务器对应用系统的访问仅限于服务器间的信息通信。因而为每个域名购买安全证书也是没有必要的,因此,在代理应用端使用自签名的SSL证书就可以保证传输安全性。基于这些考虑。我们对CAS的H'ITP客户端代码做了相应的修改。使用自定义的信任管理器和证书域名检查规则,允许使用自签名的SSL证书。
第三。增加基于JavaScript的登录状态检测。缺省情况下CAS采用H1TrP跳转的方式进行登录状态的检测,在用户未登录的情况下,应用站点需先跳转到CAS检查TGC状态再跳转回来.这需要经过两次H1TI'P重定向,对于公用的Web服务。这种方式会带来一个显著的问题:服务网站不能被C.oogle、百度等常见搜索引擎索引。为了避免这个问题,我们为CAS增加了基于JavaScript的跨域登录
・70・
万方数据
状态检测方式。使用Java.Script跨域检查TGC的存在.若检测到TGC。则通过JavaSeript指令完成服务栗据的分发.这就避免了用户在未登录状态不必要s研舭制器实现此检测机制,该控制器的主体代
的两次HTrP重定向。具体做法是通过增加一个
码如下:
protected
ModelAndView
handleRequestIntemal(nnal
HttpServletRequestrequest,final
HttpServletResponse
response)
throws
Exception
l
//获得应用服务URL
final
String
serviceUrl=request.getParameterr
service");
//检测TGC是否存在
finalString
ticketGrantingTicketId=this.
ticketGrantingTicketCookieC,enerator.retrieveC,ookieValue
(request);
//发送H,I-】[P头信息
response.setHeader(”Cache-Control”.”no-store");response.setHeader(”Pragma”,"no-cache");response.setDateHeader("Expires",0L);
response.setContentType("text/javascript;charset--uff-8'9;//若应用服务URL或TGC为空。返回空指令
if(servlceUd==null¨ticketGrantingTicketId==nun){returnnull;l
//检测到TGC,准备发送跳转指令
ServletOutputStreamout=response.getOutputStream0;
畸
恤nal
Web舢】pIi蒯咖Se而ceservice铷嚣Ⅱm幢b血j日cI理
extractService(request);
//通过TGC获得ST
finalString
ticket=this.centralAuthenticationService.
grantServiceTicket(ticketGl'antingTicketId,service);
//通过JavaScript发送跳转指令,发放ST给应用站点,完成单点登录动作
・
String
url=service.getResponse(ticket).getUrl0;
out.print("window.10cation="+url+”’1;}
catch(Exceptionex){
l//若此过程发生异常,则返回空指令,不做操作。应用服务仍可通过传统方式进行单点登录
现代远程教育研究f鲫。年1期,总103期I
,return
null;
l
最后,进行用户登录访问页面相关的模板定制,编译、打包。进行该模块的服务器部署和测试工作。・
3.用户注册模块
JA—SIG
CAS并不包含用户注册模块.因此我
们在平台中提供了统一用户注册模块。用户在此模块进行统一的注册操作(填写用户名、密码以及公用的用户信息属性)。忘记密码的用户也可以通过该模块找回密码。外部应用系统可以通过跳转或者链接的形式引导用户进入统一注册页面。并通过URL参数传递注册来源,以便注册模块在完成用户注册操作后正确将用户返回到相关的应用。
值得一提的是。外部应用并不一定要通过统一的用户注册模块完成用户注册操作。考虑到某些应用系统需要其用户提供额外的用户信息属性。我们通过应用系统接口模块提供用户注册的SOAP接口,以便应用系统可以通过API的方式进行注册,为应用系统开发人员提供选择上的灵活性。
4.用户信息编辑模块
用户在登录认证之后可通过此模块进行密码、注册信息修改以及通过Email找回登录密码等操作。和注册模块类似。外部应用系统如果不包括用户编辑模块.可通过跳转或链接的形式引导用户进入编辑模块进行修改操作。编辑模块允许外部应用通过URL传递应用地址,在完成操作后返回到应用系统页面。此外。应用系统接口模块同样提供相关的SOAP接口供应用系统调用进行相关信息操作。所不同的是,对于用户信息的编辑要求做接口调用时提供Pr(即代理票据)。
5.统一用户管理后台
这是一个专为平台管理员提供的模块,提供对用户数据库的管理功能,允许对用户进行列表查看、搜索、信息编辑、启用和禁用帐号等操作。
6.应用系统接口(SoAP
Server)
应用系统接口模块为应用系统开发人员提供基于SOAP的用户信息访问和操作接口,这个模块的存在既防止了由于外部应用随意读写数据库带来的安全性问题。又为应用开发人员提供了操作上的便利。对于开发人员而言,该模块就是一个SOAP服务器。目前主流的Web开发工具均能找到SoAP客户端代码库.因而通过SOAP提供远程调用接口完全满足跨平台支持的需求。目前该模块提供如下
万方数据
基于JA—SIGCAS
一认证平台的设计和实现【技术应用】
5个接口:用户信息获取接口、新用户注册接口、登录用户信息更新接口、用户密码修改接口以及用户
Email验证状态设置接口。
上述接口中。除了新用户注册接口不需要进行用户身份认证之外.其余接口均需要调用接口的应用系统通过代理认证过程获得Pr.并在调用接口时传递Prr参数以标识相关操作的目标用户。
在错误处理方面。我们采用不同的SOAP异常信息来区分错误的类型,应用开发人员可以根据在SOAP调用代码中捕捉到的异常信息做相应的处理。
四、基于JA—SlGCAS统一认证平台的应用
整合方案
如图2所示。应用系统需要将用户登录认证、用户注册以及用户信息更新等操作与统一认证平台进行整合。由于不同应用系统结构也不尽相同,因此整合应用到统一认证平台的步骤并不是固定不变的。为了降低整合过程中应用系统的修改工作、提高相关模块的运行效率,我们建议应用系统开发人员从以下几个方面考虑统一认证平台具体整合方案:
1.用户数据库
对于新开发的应用系统,整合CAS认证并不一定要求维护本地用户数据库。应用系统完全可以直接通过统一认证平台提供的多种接口方式进行必要的认证和用户数据修改工作。但使用远程调用或H1r即跳转的方式资源消耗比直接访问本地数据要高。效率相对也较低,所以通常建议开发人员在整合统一认证接口时考虑建立本地用户数据库,随时将通过远程调用接口获取的用户数据同步到本地。在这里。本地数据库起到缓存的作用,用以提高认证后的数据访问效率.同时减轻统一认证平台的系统负担。
而对于已存在的、需要将认证部分整合到统一认证平台的应用系统,则不需要另外增加本地用户数据库。只需考虑数据同步的问题。对于应用系统已有的而统一认证系统没有的用户,可以通过SoAP注册接口批量导入,用户的唯一性根据其注册的Email来确定。
2.本地用户会话(Session)管理
直接CAS认证过程需要经过两次H1frP跳转,开销较大.因此建议开发人员在用户通过认证之
・71・
,【技术l芝!!ll墨三!垒二!恒里垒皇堑二坠里垩垒塑塑生!!!婴
后,建立本地会话用以标识用户身份,避免经常性地跳转至CAS查询用户登录状态。另外要注意在用户进行注销操作时,需要先销毁本地会话记录.再转至CAS注销接口。
3.用户信息编辑模块整合方式
统一认证平台已经提供了用户信息编辑模块,所以通常情况下应用系统仅需要将编辑操作链接指向该模块地址即可。特殊情况下。例如应用系统需要用户填写额外的用户信息。则需要在本地数据库保存此类数据.并自行提供针对本系统的用户编辑模块。保存相关数据时。若涉及到统一用户数据库的数据,需通过SOAP接口将相关数据同步到统一用户数据库。开发人员可以根据需要在方便性与灵活性之间作出选择。
参考文献:
【I]Singlesign--onixB/0L】.[2009-9-30].http://en.wikipedia.
org/wiki/Singh_sign-on.
如果没有特别标明CAS协议。CAS缩写均表示JA—SIG
CAS。
(霪)http://code.google.com/p/rubycas-server/(勤A-sIGCAS最初于2001年由耶鲁大学(Yale
University)
开发。因而又称YaleCAS。关于JA—固GCAS的发展历史可以参阅其官方网站。
(劲A—SIGCAS基于Spring框架开发.关于该框架的信
息可参见:http://www.springsource.o,g/。
[21CAS
l
Architecture[EB/OL].[2009-9-301.http://www.
jasig.org/cas/casl-architecture,2009.
【3]CAS
2
Architecture[EB/OL].[2009—9-301.http://www.
五、结束语
本文介绍的基于JA-SIGCAS的统一认证平台从统一用户认证管理以及应用系统整合出发,目标在于提供一个完整的多网站统一认证解决方案。平台可为大型机构多个Web应用系统提供统一的可靠用户认证和用户管理功能.为系统终端用户提供使用上的便利,同时为应用系统开发人员提供跨平台、多语言支持以及便于实施的整合方案。研究下一步将对CAS模块进行性能上的优化,提高平台延展性使其能够支持海量用户数据。
jasig.org/cas/cas2-architecture,2009.
f4舟脚&删,H【榭d
G曲瞰,Andy
Newman、AldlewPeno
(2005).CAS
Protocol【EB/OH.【2009-9-301.http://www.jasig.
org/cas/protoc01.
【5】沈杰,朱程荣(2007).基于Yale—CAS的单点登录的设计与实现【J】.计算机技术与发展,17(12):144—146.
责任编辑汪燕
作者简介:
蔡永州,硕士研究生,中国科学技术大学现代教育
技术中心,安徽合肥230026
吴敏,教授,巾国科学技术大学现代教育技术中心,
安徽合肥230026
收稿日期:2009_09—30
注释:
(D由于缩写CAS既可以表示CAS协议.叉可以表示
JA—SIGCAS(即CAS服务器软件)。为避免混淆,本文约定:
(上接第36页)
参考文献:
【11陈丽(2004).远程教育学基础IM].北京:高等教育出版
社:16—21.
作者简介:
泰换鱼,硕’f:研究生,徐州师范大学信息传播学院,
汀苏徐州221009
【2】周礼良(2005).现代远程教育学习论[MI.长沙:中南大
学出版社:41—42.
杨成,教授,硕:}:生导师,徐州师范大学信息传播
学院,江苏徐州221009
收稿日期:2009一ll一30
牢基金项目:江苏省教育科学“十一五”规划2008年课题《D/2008/01/186)。徐州师范大学人文社会科学培育课题(07PYW03):江苏教育技术30年发展史研究(1978—2008l。
【31中国网教学习卡重拳出击国内远程教育市场掀波澜【EB/OL].f2009—06-0l】.http://blog.163.com/kyhlhl23/blog/
static/7880863620095144827174/.
【4凋灵丹,汤立新(2008).高校优质资源共享与提升高等
教育质量的研究【J1.职教探索与研究,(3):38-41.
责任编辑江颖
・72・
现代远程教育研究I
2010年1期,总103期l
万方数据
,
基于JA-SIG CAS统一认证平台的设计和实现
作者:
作者单位:
刊名:
英文刊名:
年,卷(期):
被引用次数:蔡永州, 吴敏, Cai Yongzhou, Wu Min中国科学技术大学现代教育技术中心,安徽合肥,230026现代远程教育研究MODERN DISTANCE EDUCATION RESEARCH2010,""(1)0次
参考文献(5条)
1. Single sign-on 2009
2. CAS 1 Architecture 2009
3. CAS 2 Architecture 2009
4. Susan Bramhall. Howard Gilbert. Andy Newman. Andrew Petro CAS Protocol 2009
5. 沈杰. 朱程荣 基于Yale-CAS的单点登录的设计与实现 2007(12)
相似文献(1条)
1.学位论文 蔡永州 基于JASIG-CAS的统一认证平台研究及其系统设计和实现 2010
随着互联网络的发展,越来越多的Web 应用程序被用于支持各种机构的日常工作。在一些教育系统、政府和企事业等组织,由于不断地引进各类系统,不同系统又分别具有独立的用户管理和认证子系统,因而管理不同系统用户的工作随着系统和用户数量的增长越来越显得繁重。对于系统终端用户而言,同一机构的不同业务系统需要重复的注册和认证,不仅使用上不方便并且容易造成混乱。为上述大型机构提供一个可靠的统一用户身份认证机制、使其能够进行统一的用户信息(登录名、用户密码以及各系统公用的用户属性信息)管理是本文研究的主要问题。
本文首先调研和分析了主流的统一认证平台单点登录解决方案的技术基础,并对各方案的优点与缺点进行了分析。其次,从统一认证平台的功能需求、性能需求、开发模式、架构方案、技术开发框架和系统配置环境等软件工程角度,对统一认证平台做了分析与设计,依据系统需求提出了系统的数据库设计与系统设计框架结构。再次,论述了基于JA-SIG CAS的统一认证平台的认证应用思想与技术方法,剖析了基于JA-SIG CAS的统一认证平台各模块的设计与实现。接着,从高性能需求的角度探讨了统一认证平台的可延展部署架构。最后,作者对本文的研究结论进行概括,并指出研究中存在的问题,给后续研究者提供参考。
在这里增加二、三句对你上述工作的成果进行评测和评价。作者期望基于JA-SIG CAS的统一认证平台能够为大型提供支持多平台的优化的应用系统整合方案,提高用户的系统管理效率。
本文链接:http://d.wanfangdata.com.cn/Periodical_xdycjyyj201001016.aspx
下载时间:2010年12月9日