CAS开发手册
引言
水利厅门户网站由一个主系统和多个子系统构成,为了避免用户在使用各个系统时重复登录,项目引进了SSO(Single Sign On,单点登录)的概念,采用CAS(Central Authentication Service,中央认证服务)技术,以求给用户更好的体验。
编写目的
为了让开发人员更好的掌握CAS技术及其使用方法,实现单点登录的功能,特编写此文档。
背景
SSO是目前比较流行的企业业务整合的解决方案之一,它定义在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
CAS 是Yale(耶鲁)大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,在2004年12月正式成为JA-SIG的一个项目。目前,也已经有许多应用CAS实现单点登录的成功案例。
CAS简介
CAS是一款不错的针对Web应用的单点登录框架,具有以下特点:
开源的企业级单点登录解决方案。
CAS Server 为需要独立部署的Web应用。
CAS Client 支持非常多的客户端(这里指单点登录系统中的各个Web 应用),包括Java, Net, PHP, Perl, Apache, uPortal, Ruby等。
从结构上看,CAS包含两个部分:CAS Server和CAS Client。CAS Server需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到CAS Server。图1是CAS最基本的协议过程:
图1CAS基础协议
CAS Client与受保护的客户端应用部署在一起,以Filter方式保护受保护的资源。对于访问受保护资源的每个Web请求,CAS Client会分析该请求的HTTP 请求中是否包含Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的CAS Server登录地址,并传递Service(也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第3步中输入认证信息,如果登录成功,CAS Server随机产生一个相当长度、唯一、不可伪造的Service Ticket,并缓存以待将来验证,之后系统自动重定向到Service所在地址,并为客户端浏览器设置一个Ticket Granted Cookie(TGC),CAS Client在拿到Service和新产生的Ticket过后,在第 5,6 步中与CAS Server进行身份合适,以确保 Service Ticket的合法性。
在该协议中,所有与CAS的交互均采用SSL(Secure Sockets Layer,安全套接层)协议,确保ST和TGC的安全性。协议工作过程中会有2次重定向的过程,但是CAS Client与CAS Server之间进行Ticket验证的过程对于用户是透明的。
另外,CAS 协议中还提供了Proxy(代理)模式,以适应更加高级、复杂的应用场景,具体介绍可参照CAS官方网站。
搭建环境
准备工作
下载必须的软件:
JDK下载地址:http://jdk6javanet/downloadhtml
Tomcat下载地址:http://tomcatapacheorg/indexhtml
CAS Server下载地址:http://wwwjasigorg/cas/download
CAS Client下载地址:http://downloadsjasigorg/cas-clients/
由于原有的Tomcat可能要用于其它项目的开发,故建议重新配置一个单独的Tomcat环境供CAS使用。配置Tomcat的过程请参照其它网站。
本文档的环境:
Tomcat6029
JDK6
CAS Server版本:cas-server-3431、cas-server-34310
CAS Client版本:cas-client-3112、cas-client-321
Tomcat安装SSL
在以上描述中,可知所有与CAS的交互均采用SSL协议,故要实现CAS SSO必须先要让Tomcat支持SSL,配置SSL共有四个步骤,下面逐一进行描述。
生成Keystore
证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书。在此,主要讲解用JDK自带的keytool工具生成证书。
进入命令提示符,输入以下指令:
keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakey
CAS开发手册 来自淘豆网m.daumloan.com转载请标明出处.