单点登录CAS介绍
单点登录SSO(Single Sign-On)是身份管理中的一部分。当一个大系统中存在多个子系统时,用户只需要正确登陆其中任何一个子系统,就可以在各个子系统中来回自由切换和使用。CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架。
CAS介绍
CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:
1、开源的企业级单点登录解决方案。
2、CAS Server 为需要独立部署的 Web 应用。
3、CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
?
CAS原理和协议
CAS从结构上来说包括俩部分,分别是CAS Server和CAS Client。
CAS Server需要独立部署,主要负责认证工作,CAS Client负责处理对客户端访问受限资源的访问请求,当针对该资源的访问需要登录时重定向到CAS Server。
其基本的协议过程如下图:
?
图例说明:
CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。
Step1: 用户第一次访问Biz系统主页http://bizserver/index.jsp ;部署在Biz系统上的CAS Client会验证该用户是否已经登录(验证方法:首先判断session中是否含有receipt,如果已经有了即表示已经验证成功可以访问,否则会分析该请求中是否包含ticket,如果没有表示还未登录,有表示已经登录),将用户重定向到CAS登录界面 https://casserver/cas/servlet/login?service=http://bizserver/index.jsp ,同时在重定向的URL上用service参数将用户的目标地址传给CAS服务器。
Step2:用户在CAS的登录页上输入用户名密码登录,CAS服务器认证通过后,生成一个ticket,并带在目标地址的尾部返回客户端的浏览器redirect:http://bizserver/index.jsp?ticket=service ticket.
Step3:客户端浏览器获得CAS服务器的认证应答,取得凭证ticket后,使用重定向的链接http://bizserver/index.jsp?ticket=casticket访问Biz服务
Step4: 重复step1的步骤,部署在BizServer上的CAS Client获取到了ticketticket凭证,表示已经登录成功。Filter将使用该凭证通过URL https://casserver/cas/servlet/validate?service= http://bizserver/index.jsp &ticket=casticket 向CAS认证中心确认对应的服务请求和凭证是否有效。根据CAS服务器返回的结果,如果凭证有效,则CAS Client允许用户进入http://bizserver/index.jsp 所指向的页面;否则,再次重定向到https://casserver/cas/servlet/login?service=http://bizserver/index.jsp 上要求用户进行认证。
?
下面将详细的介绍CAS Server 和 CAS Client。
?
参考文章:
1.http://linliangyi2007.iteye.com/blog/165310
2.http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html