CAS Server单点登录

ne8c 贡献于2013-10-12

作者 aa  创建于2013-10-08 03:06:00   修改者zpq  修改于2013-10-08 03:06:00字数5698

文档摘要:校园网中简易单点登录系统的构建与实现摘要:单点登录是目前比较流行的对多种系统业务进行集成与整合的解决方案之一。本文尝试使用是Yale大学的一个开源软件CAS(Central Authentication Server)+MySQL,实现了一个简易单点登录系统,来解决校园网中多个应用系统的用户统一身份认证和集中管理问题。关键字:单点登录;统一身份认证;集中管理;一、前言单点登录是目前比较流行的对多种系统业务进行集成与整合的解决方案之一。所谓单点登录(Single Sign On,简写为SSO),即是用户只需在登录时提供一次用户认证信息,通过认证以后,无需再重复登录便可访问其他各子系统应用。
关键词:

校园网中简易单点登录系统的构建与实现 摘要:单点登录是目前比较流行的对多种系统业务进行集成与整合的解决方案之一。本文尝试使用是 Yale 大学的一个开源软件CAS(Central Authentication Server)+MySQL,实现了一个简易单点登录系统,来解决校园网中多个应用系统的用户统一身份认证和集中管理问题。 关键字:单点登录; 统一身份认证; 集中管理; 一、前言 单点登录是目前比较流行的对多种系统业务进行集成与整合的解决方案之一。所谓单点登录(Single Sign On,简写为SSO),即是用户只需在登录时提供一次用户认证信息,通过认证以后,无需再重复登录便可访问其他各子系统应用。IBM对SSO有一个形象的解释“单点登录、全网漫游” [1]。现有的单点登录实现案例及文献[2][3][4]综合分析显示,对已有系统进行单点登录改造、整合,或基于SSO重新规划设计所有的网络应用,无疑是一件耗时耗力、代价巨大的事情,虽然市场上已出现了多种专门的SSO商业软件,但价格,以及对已有的网络应用支持是否完善等问题,也往往出现事倍功半的情况。本文就尝试以开源软件为基础,构建一个简易的单点登录系统,来解决一个校园网中多个应用系统的用户统一身份认证和集中管理问题。 二、应用技术分析 目前,实现单点登录的开源软件主要有Opensso[5]、Josso[6]、CAS等几种。其中OpenSSO是Sun公司支持的一个开源的SSO项目,它的体系结构设计合理,功能比较强大,美中不足的是客户端支持不够广泛;而Josso也是一个用Java写的单点登录产品,通常认为比OpenSSO更成熟一些,它支持的客户端包括Java,PHP和ASP;CAS(Central Authentication Server) 是 Yale (耶鲁)大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,它提供了一个企业级单点登录解决方案,通过独立部署CAS Server,及在客户端比如Java、.Net、PHP、Perl、Apache、uPortal、Ruby等Web 应用中加入CAS Client的方式实现统一认证[7]。 图1.CAS实现单点登录的机制 CAS实现单点登录的机制见图1, 其中CAS Server主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,当用户访问受保护的某Web应用时,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果有,则说明当前用户已经登录,允许访问资源,否则,将请求重定向到CAS Server 登录地址,强制对用户认证。由于 CAS设计理念先进、体系结构合理、配置简单、客户端支持广泛、技术成熟等优点,本文选用该软件构建单点登录系统。 CAS协议仅仅为基于Web的应用提供了用户信息的认证服务,在实际应用中,CAS Server的认证接口会处理登录用户的凭证(Credentidals)信息,比如:最常见的是用户名/密码对,CAS Server可能需要到数据库检索一条用户帐号信息,也可能在 XML 文件中检索用户名/密码,还可能通过 LDAP Server 获取等。出于简单、易于再开发考虑,本文选用的是开源数据库Mysql来集中保存用户信息,并对用户信息进行统一管理。 三、系统结构与流程 根据上述分析,该系统的构建主要有三部分组成:统一用户管理、CAS统一认证服务、各种Web应用(根据需要可集成多个系统)。如图2: 图2.系统总体结构 统一用户管理作为该系统独立的一个应用模块,主要负责用户的添加、删除、更新等管理。 统一认证即是当用户第一次访问不同的Web应用资源时,都将被重定向到CAS统一认证服务器,根据数据库中用户与角色的信息凭证,对其进行检验,如果认证通过,则转向相应的Web应用。 四、系统实现 根据上述分析,本文将基于J2SE构建该单点登录系统,采用Tomcat作为Web服务器,结合CAS Server配置统一认证服务,使用数据库Mysql来存储用户与角色信息,并进行相应的应用程序开发以实现用户添加、删除、更新等管理,至于其他的客户端Web 应用可根据需要自行选择不同的系统结合CAS Client进行配置。 (一)前期工作 首先,根据服务器配置,正确安装JRE、Tomcat与Mysql。笔者使用是的:JRE1.6.0_10+Tomcat 6.0.36+Mysql5.6,然后输入部分用户信息到数据库中,以用于测试。 另外,CAS需要SSL(安全套接字层)才能正常工作。SSL是一套提供身份验证、保密性和数据完整性的加密技术,最常用来在Web浏览器和Web服务器之间建立安全通信通道。为支持SSL通信,必须为Web服务器配置 SSL 证书。SSL证书最好由专业的CA机构颁发。但作为一个局部的应用系统,本文采用J2SE自带的keytool工具,自己生成一个证书。 第一步:生成服务器证书:参考命令格式如下: keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -keypass changeit -validity 365 -storepass changeit -keystore d:\sso\server.keystore 第二步:将证书导入到JDK的证书信任库中: 导入过程包括两个操作,首先是导出证书,然后将其导入到证书信任库,参考命令命令如下: keytool -export -trustcacerts -alias tomcat -keystore d:\sso\server.keystore -file d:\sso\server.crt -storepass changeit keytool -import -trustcacerts -alias tomcat -file d:\sso\server.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit 第三步:将证书应用到Web服务器Tomcat,配置其SSL服务,需要修改server.xml中Connector标签为如下内容: (二) CAS Server应用配置 统一认证服务的配置相对简单,只需将CAS的相应文件包放到Tomcat服务器的web应用文件夹即可。 访问http://www.ja-sig.org/products/cas/downloads/index.html下载CAS的最新版本。笔者使用的版本是cas-server-3.4.12。解开压缩包后,将其modules目录下的cas-server-webapp-3.4.12.war 复制到Tomcat服务器的webapps下,重命名为cas;重启Tomcat后,在浏览器地址栏输入:https://localhost:8443/cas。如果能打开登录页面,则表示 CAS 应用是可以正常启动。可根据需要,打开cas/webapp/WEB-INF/view/jsp/default/ui中的jsp文件,以及/cas/webapp/css中的样式表文件,对登录页面进行简单修改。 (三) Mysql数据库的链接与配置 在Mysql数据库中建立一个用户(User)表。表结构如下表1示,用于存放用户的登录信息,包括:用户编号、登录名称、登录密码、用户名称、用户描述等。 表1.用户(User)表结构 字段名称 字段类型 字段说明 Userid Bigint 用户编号 Login varchar 登录名称 Password varchar 登录密码 Username varchar 用户名称 Description varchar 用户描述 然后通过以下步骤配置CAS,应用mysql数据库进行用户的身份验证。 第一步:复制以下两个文件到 cas/WEB_INF/lib目录下: cas-server-support-jdbc-3.1.12.jar;mysql-connector-java-5.0.8-bin.jar 第二步:配置cas/WEB-INF/目录下的deployerConfigContext.xml 文件,在该文件中有两处需要修改: 1.增加数据源 2.改变认证方式 将 修改为: (四)CAS Client客户端配置 对各种Web 应用进行统一认证,是通过将CAS Client加入到客户端模块实现的。下面仅以基于java的Web 应用进行说明: 可从http://www.ja-sig.org/downloads/cas-clients/CAS Client下载CAS Client的最新版本,比如:本文使用是cas-client-3.2.1,打开压缩包后,将其modules目录下的cas-client-core-3.2.1.jar复制到所发布Web 应用的WEB-INF/lib下。然后,在客户端web应用中修改WEB-INF/web.xml 在里面添加过滤器,示例如下: …… edu.yale.its.tp.cas.client.filter.loginUrl https://localhost:8443/cas/login edu.yale.its.tp.cas.client.filter.validateUrl https:// ServerName:8443/cas/proxyValidate …… 在多种Web应用客户端进行上述类似配置后,通过浏览器访问CAS保护的Web应用时,就将会被重定向到CAS统一认证服务器(即https://localhost:8443/cas),要求输入用户名与密码进行认证,从而实现了简单的单点登录与认证。 五、小结 本文基于开源软件所实现的简易单点登录系统,完成了用户的集中管理与统一的身份认证,使得用户输入一次用户名和密码便可访问多个Web应用,从而提高了用户使用系统的效率,改善了用户体验。但是,单点登录(SSO)的部署,本身就是一把双刃剑,如果配置不合理反而会使得系统的安全性降低。本文所提出的这个系统,在实际应用中,还有待于进一步改进,以提高系统的整体安全性。 参考文献: [1] WebSphere环境下的SSO实现之一: SSO实现技术准备[EB/OL]. http://www.ibm.co-m /developerworks/cn/websphere/library/techarticles/xiaojing/SSOprepare/SSOprepare.html.2013. [2] 李凡、王流一. 一种基于票据的单点登录协议设计与实现[J]. 计算机工程与科学, 2012(2). [3] 郑伟、王加阳. 异构应用的单点登录方法[J]. 软件导刊, 2010(7). [4] 金永勤. 在应用整合中单点登录解决方案的研究[J]. 计算机与现代化, 2007(7). [5] opensso-单点登录框架[EB/OL]. http://www.oschina.net/p/opensso.2013. [6] JOSSO的类似软件 - 单点登录框架[EB/OL]. http://www.oschina.net/p/josso/simila-r _projects. 2013. [7] 使用 CAS 在 Tomcat 中实现单点登录[EB/OL]. http://www.ibm.com/developerwor-ks/cn/ opensource/os-cn-cas/index.html. 2013.

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

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

需要 8 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档