基于用户映射的CAS单点登录


信息通信技术6 基于用户映射的CAS单点登录 系统设计与实现 张 齐 钟观宝 华南理工大学软件学院 广州 510640 摘 要 随着信息化进一步发展,企业应用系统越来越多。用户每使用一个系统时都必须登录一次,给用户 带来不便,而单点登录机制能很好的解决这一问题。本文介绍一个基于用户映射的单点登录系统的设计与实 现,系统采用CAS实现统一用户认证,为用户登录多应用系统提供统一的入口,实现基于LDAP的人员组织 架构管理,并通过用户映射机制实现多应用系统的整合。 关键词 统一认证服务;单点登录;LDAP;用户映射 前言 随着信息化进一步发展和企业的业务运营需要,企 业内部的应用系统越来越多。这些系统往往有着独立的 用户认证模块和机制,用户不得不记住每一个系统的登 录帐号和密码,在使用不同的系统时,必须重复登录, 给用户的使用造成诸多不便。针对这种情况,单点登录 (Single Sign On)[1]模型应运而生,同时不断地应用到 企业的业务系统中。在单点登录系统中,用户只需在登 录时提供一次用户认证信息,通过认证以后,在访问企 业门户中的各个子系统时无需再重复登录。 目前有很多单点登录的实现方案,其中常见的单点 登录认证机制有:Kerberos、PKI、KryptoKnight、 Sesame等[2],常用的技术有:Web Service、Cookie 等。在单点登录系统的实现过程中,往往会碰到如下问 题:1) 企业现有的各个应用系统间相互独立或者通信 状况是混乱的,对外接口也不同,这给应用系统的集成 带来了极大困难。2) 同一个用户,拥有多个应用系统 的访问凭证,使用户信息难以统一管理。3) Cookie不 能跨域的限制也使实现各个应用系统之间Cookie共享成 为一个难题。本文介绍的基于CAS协议,用户映射机制 和LDAP目录服务设计的单点登录方案,能很好的解决 这些问题。 1 系统设计方案 系统的中心为CAS认证中心和LDAP目录服务器, 整个系统的结构如图1所示。 CAS认证中心提供系统的认证服务,其主要支持 的业务有:向所有应用系统提供统一认证服务,同时提 供用户调用接口。LDAP目录服务则保存所有用户相关 信息。所有经CAS认证中心授权的应用系统在整个单 点登录系统中地位是对等的,也就是只要在其中一个应 用系统上进行登录,就可以直接访问其它应用系统而无 需重复登录。每个应用系统进行用户身份认证的方式可 能略有不同,要根据具体情况实现。对于已经上线运行 的应用系统,由于这些系统往往有着独立的认证机制, 而且企业有很多业务流程涉及到用户信息,单点登录的 实现应尽量不影响这些应用系统的原认证模块和具体的 业务流程;对于新的或其他第三方系统,则可以完成由 CAS服务器来接管用户身份的认证。总的来说,单点登 录只负责决定用户是否能进入某个应用,同时,这些应 图1 单点登录系统结构图 研究与开发 Research & Development 研究与开发 2009 04 7 Research & Development 用系统有着各自的资源权限管理策略,用户对资源的访 问权限由应用系统独立控制。下面将分别从CAS认证规 范,基于LDAP的人员组织架构管理以及基于用户映射 的单点登录机制三方面进行介绍。 2 CAS认证规范 CAS(Central Authentication Service)[3]是美国耶 鲁大学为Web应用统一设计的单点登录认证方案,属于 开源项目。它能够适合任何语言编写的客户端应用,实 现简单实效。它使用SSL作为服务器端和客户端之间的 通讯协议,安全性可以保证,是很好的SSO解决方案。 2.1 相关SSO概念[4-5] CAS认证中心(CAS Server):一个集中所有用户 认证的唯一的服务器,提供认证服务。 CAS认证客户端(CAS Client):使用认证中心服务 实现单点登录的应用系统。 允许票据Cookie(Ticket granting cookie, TGC):浏览器在登录CAS认证中心成功后,认证中心 在该浏览器中写下的一个没有任何个人信息的Cookie, 主要表示该用户已经被认证中心认证通过,为以后登录 应用系统提供依据。 服务票据(Service Ticket,ST):当用户从浏览器 请求使用受保护的资源时,该应用的CAS认证客户端会 自动重新定向到认证中心,认证中心根据TGC分发给 该请求一个服务票据,然后CAS认证客户端持有该ST 去确认并取得该用户的身份。 2.2 CAS认证流程 图2是CAS的基本协议框架。 1) 浏览器访问受保护的Web应用系统资源,如: 在这个过程中,CAS认证客户端过滤从浏览器传来的每 一个Web请求并分析请求中是否包含服务票据(ST),如 果没有包含,则说明该用户没有经过认证。 2) 该应用的CAS认证客户端需要重定向到CAS认 证中心请求服务票据(ST),并把Web请求的URL编码后 作为参数传递。 3) 用户认证过程,如果用户提供了正确的凭证, CAS认证中心分发给该请求一个随机的包含用户名等信 息的服务票据(ST),该ST是不可以仿造的,而且有一 定的时效性。最后,重定向CAS认证客户端在2) 中通 过参数传递的URL,并将服务票据(ST)作为URL参数 传递。在这种过程当中,CAS认证中心还会向经过认证 的客户端浏览器发送一个允许票据Cookie(TGC),TGC 相当于CAS认证中心发送给用户的通行证,如果用户持 有TGC且其还没失效,那么就重定向到受保护的Web 应用系统资源,达到了SSO的效果;如果TGC失效,那 么用户需要重新进行认证;同时,由于对用户最有价值 的TGC只是跟CAS认证中心有关,CAS能很好的解决 Cookie不能跨域的问题。 4) CAS认证客户端持有该服务票据(ST)到CAS认 证中心确认并取得该用户的身份,这个过程不通过浏 览器而是由CAS认证客户端应用直接访问CAS认证中 心。CAS认证中心确认后返回该用户的身份信息;如果 服务票据(ST)不正确,则返回错误信息并提示用户重新 进行认证。 3 基于LDAP的人员组织架构管理 轻量级目录访问协议LDAP(Lightweight Directory Access Protocol),基于X.500标准,直接运 行于TCP/IP或者其他可靠传输协议之上,是目录服务 的前端访问协议[6]。 LDAP是一种层次型数据库,按照树型结构组织信 息,LDAP对浏览和查找目录及读取内容进行了专门的 优化,具有非常好的读取数据能力,当从LDAP服务器 图2 CAS基本框架图 信息通信技术8 读数据时比从关系型数据库读取数据快一个数量级。采 取LDAP作为单点登录系统的认证数据库,可以很好的 处理大量用户并发访问,而目录树结构也便于对人员组 织架构的管理。 基于LDAP的人员组织的核心是LDAP的数据结 构。LDAP服务器上的信息结构包括数据模式和存储结 构。存储在LDAP上的人员组织信息包括人员信息、组 织信息。 3.1 数据模式 数据模式(Schema)定义了存储在LDAP服务器中 数据的基本类型,这些定义不是针对某一个特别的应 用,而是为所有应用而进行的公共数据定义。LDAP数 据模式采用了类似面向对象的概念:基本数据单元条目 (Entry)由属性类型及属性中存储的属性值对应构成, 一个属性类型可以对应多个属性值。每个条目属于某个 或多个对象类(ObjectClass),每个对象类又由多个属性 类型组成,每个属性类型有所对应的语法和匹配规则。 LDAP协议的核心规范RFC系列文件中描述了对标 准模式的定义。我们可以通过扩展这些标准来自定义数 据模式。常用的标准模式如RFC2798中的人员数据模 式Person,RFC2256中的组织数据模式organization, 组织单元数据模式organizationalUnit。 3.2 存储结构 LDAP服务器上的数据是以树状结构进行存储的, 其结构图如图3所示。 “dc”即domainControl,主要在目录中描述域; “o”即organization,主要在目录中用来描述不 同的组织; “ou”即organizationlUnit,主要在目录中用来描 述不同的组织单元; “uid”即userId,主要在目录中用来标识不同的 用户或帐号。 4 基于用户映射的单点登录机制 CAS提供了一个集中的认证服务,而LDAP提供了 一个集中的用户管理,但并不包括集中的授权和会话的 管理,授权和会话的管理依赖于应用系统本身。对于新 的应用系统,开发人员可以不考虑认证模块,只注重授 权和业务的实现,避免了认证模块的重复开发,统一的 用户信息管理也大大降低了维护成本;然而,许多业务 系统在单点登录系统上线以前已经存在,它们有其自身 的认证模块,人员组织信息。在替代它们的新应用系统 出现之前,必须将它们很好的整合在单点登录系统中。 通过用户映射,将CAS人员信息与这些业务系统的人员 信息关联起来,当用户在经过CAS认证之后,这些业务 系统就可以正确识别用户的身份并进行授权,以实现单 点登录的目的。对应于不同的情况,基于用户映射的认 证方式有应用系统模拟登录和对原应用系统的认证模块 进行改造。 4.1 基于用户映射的应用系统模拟登录 这种模拟登录机制是针对那些基于Form表单方式 登录的Web应用系统设计的,它不需要对应用系统的 原有认证模块作任何修改。图4是用户映射机制的结构 图,其中,CAS单点登录系统维护了一个CAS Client 应用注册模块,一个CAS Client用户注册模块和一个 经过加密的用户映射表。 加入CAS统一认证服务的应用系统首先需要向 CAS认证中心提供唯一的应用标识(如应用的访问 图3 LDAP存储结构图 图4 用户映射结构图 研究与开发 2009 04 9 URL),CAS管理员根据应用标识为其注册一个全局唯 一的应用ID并记录该应用的认证接口,然后初始化用户 映射表,初始化的主要工作是导入原应用系统中与认证 相关的主要信息(如登录帐号、密码、用户ID等),并与 CAS的用户ID、应用ID进行关联,没有成功初始化的 用户可以通过CAS Client用户注册模块进行注册。 建立用户映射表之后,实现应用系统模拟登录的方 式有: 1) 提供一种应用登录插件,并在CAS认证客户端 安装该插件。通过插件的接口支持来完成自动填写用户 名和密码,并提交应用系统的登录Form结果,以实现 模拟登录。 2) 由应用系统提供Web Service接口,CAS认证中 心只负责提供当前通过认证的用户映射信息,登录由该 Web Service接口实现[7],该方式适用于企业内部,安 全性要求不高的应用。 对于已经成功登录到CAS单点登录系统的用户, 其应用系统模拟登录的过程描述如下: 1) CAS认证客户端持该用户提交的ST与CAS认证 中心交互,认证中心确认之后,根据该用户信息和认证 客户端应用的唯一标识,在用户映射表中查找该用户所 请求访问的应用系统认证信息。 2) 如果映射记录存在,则在重定向的过程中,将 该用户认证信息提交给CAS Client应用的认证接口。 如果记录不存在,则重定向到CAS Client用户注册模 块,让用户填写正确的用户信息。用户提交结果后,由 认证中心和CAS Client认证接口进行交互。如果信息 不正确,则拒绝该用户的访问请求,返回用户注册模 块;如果信息正确,认证中心往用户映射表插入一条新 记录,同时重定向到受保护的Web应用系统资源。 3) 应用系统对用户的认证信息验证成功后为其授 权,发回响应并连接会话。 4.2 基于用户映射的认证模块改造 某些应用安全性要求比较高,不希望用户帐号密码 在外部服务器上存放或在网络传输,要实现这些应用的 单点登录,可以在应用系统中实现用户映射,并对认证 模块进行相应的改造[8]。与模拟登录方式不同的是,应 用系统维护了CAS人员关联模块和一个用户映射表。 CAS人员关联模块实现的功能是:1) 从认证中心 LDAP服务器上同步CAS人员信息;2) 与当前系统的 人员信息进行关联,生成用户映射表。 当持有合法ST的用户要访问这些改造过的CAS Client应用时,应用系统向认证中心获取该用户的身 份,以此作为凭证在用户映射表中找到对应的本地帐 号,如果信息正确则为用户授权访问系统资源。 5 系统实现 根据上述设计方案,本文通过使用Weblogic 8.1.4+cas-server-3.3配置CAS认证中心, OpenLDAP配置LDAP服务器,JBOSS+cas-client- 2.0.11配置CAS客户端以及客户端认证模块改造来描述 实现的过程。 5.1 前期工作 正确部署CAS认证中心,完成LDAP服务器配置工 作后,实现代码使CAS认证中心访问LDAP服务器。最 后将用户信息和组织架构录入到LDAP服务器中,作为 统一身份访问CAS客户端。 5.2 CAS客户端配置 CAS客户端中部署的应用程序基于Spring+Hibe- rnate+Webwork开源框架。在配置过程中,首先将 cas-client-2.0.11/java/lib/拷贝到客户端应用程 序的/WEB-INF/lib中,并在Web.xml中配置CAS Filter。如在CAS Filter中指定了cas.client.filter. loginUrl为http://localhost:8002/cas/login,当用户 访问CAS客户端时,页面将跳转到这个loginUrl,要求 用户进行验证。要注意的是,如果Web.xml中配置了 encodingFilter,请将其置于CAS Filter前面,避免乱 码引起错误。 配置完成后,在应用的数据库中增加用户映射表 core_ssousermap,接着对验证模块进行改造。以下是 其中实现SSOProcessing的部分代码: if(ssoCasPoweron && newOldLoginer==null) Research & Development 信息通信技术10 {Authentication authentication=(Authentication) httpSession.getAttribute(Constants.SSO_CAS_ USER);//获得CAS用户信息 if(authentication!=null){ String orgcode=httpRequest. getParameter(Constants.VAR_WEB_SITE_URL); //根据CAS用户信息获得本地用户信息 newOldLoginer=this.newOldForwardManager.g etForwardLoginer(authentication,orgcode); //将CAS单点的用户信息在项目中做一个副本,供以后 调用 SSOLoginer ssoLoginer = new SSOLoginer(); ssoLoginer.setId(authentication.getSsoId()); ssoLoginer.setLoginid(authentication. getName()); ssoLoginer.setCname(authentication. getRealName()); httpSession.setAttribute(com.mip.core.security. Constants.SSO_LOGINER_NAME, ssoLoginer); } } 6 结论 本文介绍了一个基于用户映射的CAS单点登录系 统,该系统实现了对多应用系统的整合和统一认证。基 于用户映射的认证方式有应用系统模拟登录和对原应用 系统的认证模块进行改造。用户映射的认证机制优点 在于,应用系统无需破坏原认证模块,就可以很好的整 合到单点登录系统,大大减轻了系统整合的难度和修改 成本,对于企业门户系统实现单点登录有较好的参考价 值。但另一方面,由于统一认证业务可能涉及到很多应 用系统,大量的用户信息会导致数据冗余和用户不同步 的问题,这仍需要进一步思考完善。 参考文献 [1] [2] [3] [4] [5] [6] [7] [8] The Open Group.Single Sign-On[EB/OL]. [2008-07-21].http://www.opengroup.org/ security/sso/ 付云侠,薛田良,任小燕,等.网络安全中实现身份认 证的单点登录[J].计算机与数字工程,2008,36(2): 85-87,136 JA-SIG Central Authentication Service[EB/ OL]. [2008-08-05]. http://www.ja-sig.org/ products/cas/ 钟林栖.基于CAS协议的单点登录系统的研究[D]. 成都:四川大学,2006 贾宗星.单点登录系统的研究与分析[D].西安:西安 建筑科技大学,2007 刘持莲,许华虎,扬振宇.基于LDAP和SOAP的校园 统一身份认证系统的研究与实现[J].计算机应用与 软件,2006,23(12):59-60,80 谭立球,费耀平,李建华.企业信息门户单点登录系 统的实现[J].计算机工程,2005,31(17):102-104 沈杰,朱程荣.基于Yale_CAS的单点登录的设计 与实现[J].计算机技术与发展,2007,17(12):144- 146,150 研究与开发 2009 04 11 作者简历 张 齐 华南理工大学副教授,研究方向为工业设备自动化。 Design and Implementation of CAS-SSO System Based on User-Mapping Zhang Qi Zhong Guanbao School of Software Engineering, South China University of Technology, Guangzhou 510640, China Abstract With further development of information technology, more and more application systems are applied in enterprises. It is inconvenient for users to sign in every time when accessing each system. This paper describes the Design and Implementation of a CAS-SSO System Based on User-Mapping. The system uses CAS to implement Central User Authentication, provides a unifi ed entrance for users to log in. Finally we integrates this scheme into multi-applications to verify it. Keywords CAS; SSO; LDAP; User-Mapping 钟观宝 华南理工大学硕士研究生,研究方向为智能信息处理及其应用。 Research & Development
还剩5页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 16 金币 [ 分享pdf获得金币 ] 7 人已下载

下载pdf

pdf贡献者

java_yqy

贡献于2011-11-24

下载需要 16 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf