基于CAS的Web应用单点登录系统的研究
作者:宋洪娟 字数:2751 点击:
摘 要:本文介绍了单点登录技术的基础理论,分析了三种单点登录方案,并在基于CAS协议单点登录方案基础上加以改进,设计了符合某信息门户实际需求的单点登录模型,该模型实现了统一用户管理,集中认证和单点登录。
关键词:单点登录;Web应用;CAS协议
0 引言
近年来随着企业信息化建设的不断进步以及互联网技术的发展,企业在不同阶段开发出了多个应用系统,这些应用系统可能是基于不同技术实现的,它们有着独立的安全认证和用户管理机制。在门户系统中集成这些应用时,这些机制就成了集成的阻碍,增加了用户登录出错的可能性,降低了用户访问资源站点的安全性,加重了管理员的负担。所以非常必要对门户系统和接入到其中的资源站点建立统一身份认证,实现单点登录。
1 单点登录技术及其分类
单点登录(Single Sign-On,SSO),即用户在访问多个系统和多种受限资源时,只需进行一次登录和身份验证,不用重复登录,用户安全信息转换为电子身份后自动地传递到多个系统,从而提高工作效率和安全性[1]。
1.1 根据应用系统结构分类
应用系统可以分为客户端/服务器(C/S)和浏览器/服务器(B/S)结构,单点登录技术也可分为针对C/S的基于Windows窗体的单点登录和针对B/S结构的基于Web的单点登录技术。从理论上说,这两种技术能够使用相同的认证和授权框架结构,区别在于基于Web的单点登录在实现方式上更多的采用了Web相关的技术。
1.2 根据实现技术分类
按照实现技术分类,可分为基于脚本(Script)的单点登录和基于票据(Ticket)的单点登录。
基于脚本的单点登录技术,一般使用自动化技术,通过一些脚本在客户端自动为用户输入口令和用户名。用户ID和密码大都以明文方式存放在客户端,存在安全隐患。
基于票据的单点登录技术,其主要目标是通过要求目标系统进行改造接受访问票据来实现SSO,对用户的验证工作由SSO服务器负责,目标系统的责任只是向SSO服务器验证访问票据的有效性。根据使用票据类型的不同,基于票据的单点登录可分为基于Cookie的单点登录、基于Kerberos的单点登录和基于SAML的单点登录三种。
2 三种单点登录方案
一直以来,产业界和理论界纷纷提出了各自的单点登录解决方案。对单点登录的研究和开发工作一直在不断深入。目前的单点登录方案主要有Yale-CAS(Central Authentication Service)、Microsoft的Passport和Sun领导下的自由联盟(Liberty Alliance)。
2.1 基于CAS协议的单点登录方案[2]
CAS协议是一个独立于平台的,易于理解的用JAVA实现的开源协议,支持多方认证和代理功能。它能为多个应用提供单点登录基础架构。它将用户身份认证集中于单一的Web应用,让用户简化他们的密码管理,从而提高安全性,开发者可以很容易的修改验证逻辑。CAS协议的基础思想都是基于Kerberos的票据方式。
基于CAS协议的单点登录方案在安全性上,保证用户信息不在应用系统间传递,使用具有更高安全性的票据验证用户和应用服务。在适用性上,它支持多种客户端,如Java、Perl、Jsp、Asp、Php、Apache和PAM模块,方便应用程序集成。它应用范围很广,在北美和欧洲的大部分高校和科研院所都采用了CAS,不少企业也在CAS协议的基础上开发自己的单点登录产品。
2.2 微软Passport单点登录方案
Passport是微软推出的基于Web的统一身份认证系统。其核心的身份认证服务器以及用户个人信息服务器都由微软集中控制,其技术细节不对外公开,因此人们一直对其安全性持怀疑态度,用户担心其个人资料被泄漏。微软的Passport系统曾被黑客多次入侵。这些都限制了微软Passport服务的进一步推广。
2.3 自由联盟单点登录方案
自由联盟规范依据了OASIS产业标准,它不是中央集中式的单一登录模式,而是一种相对开放的模式,在其信任圈中可以存在多个相互独立的身份提供者。但目前自由联盟规范仍处于研究阶段,且其本身的协议比较复杂,实现起来具有一定难度,没有成型的应用服务。
3 单点登录系统的设计
本文为某信息门户设计单点登录方案。某信息门户集成了包含论坛、博客、新闻评论、房产信息等应用系统,用户在使用多个应用系统时需要多次输入用户名和密码获得各应用系统的服务,给用户的使用带来极大不便。与此同时系统管理员需要维护多个用户数据库,加重了工作负担,,也造成了资源的浪费。
在选取方案时,要考虑到安全性高、易实现、登录方案成熟等要求。通过对前面三种单点登录方案的比较,为了解决信息门户的这些问题,使用基于CAS协议单点登录方案,并在此基础上对其加以改进。信息门户中用户群体呈现多样化,有一般的注册用户,也有不同等级的管理人员,并且应用系统也会不断增加,要求新系统在加入信息门户时,修改较小,最好有通用的接口供其调用。无论用户通过门户登录,还是通过各个应用系统登录,都能做到单点登录,全网通行。通过以上分析,提出一个以集中认证服务器为中心的单点登录系统模型。整个系统的结构如图1所示。
图1 单点登录系统模型
集中认证服务器实现统一用户管理、集中认证和单点登录功能。统一用户管理包括注册用户管理、管理员管理、角色管理、权限管理、应用系统管理、日志管理和基于角色的访问控制。基于CAS协议实现集中认证和单点登录,每个应用系统在认证用户时都通过重定向到集中认证服务器进行集中身份认证。
单点登录系统只解决用户认证和用户是否有权限进入某个应用系统的问题,而用户在应用系统的权限(业务权限)则由各应用系统进行控制。其原因是应用系统都拥有自己的权限和资源管理策略。如果采用统一集中的权限管理策略,虽然用户权限管理起来比较方便,但是对应用系统的修改比较大,这样导致应用系统集成成本增加,并且各个系统都有自己不同的业务逻辑,对应用系统的修改可能破坏掉其业务逻辑的完整性。统一集中的权限控制策略对于所有的系统都是自己开发时比较合适,而对于第三方系统以及以后新的应用系统的加入,都会带来非常多的不方便。基于以上考虑,本文单点登录系统采用集中认证分级授权的策略。
参考文献
[1]张挺,耿继秀. Web环境下的SSO实现模式研究[J].计算机仿真,2005,22(8):128-129.
[2]罗时飞.Acegi CAS—构建安全的Java系统[M].北京:电子工业出版社,2007.