前话
单点登录问题(sso)的一个通俗理解是指访问同一服务器中的不同应用中的受保护资源,用户只需要一次通过登录验证。SSO的应用场景很多,博主这里就不举例了。CAS是耶鲁大学开发的一个SSO系统,同时Spring Framework的安全框架Acegi也支持CAS,CAS被设计成一个单独的web应用。CAS的设计目标:
1、为多个web应用提供SSO设施,同时可以为非web应用但是拥有web前端功能的服务提供SSO功能;
2、简化应用用户身份认证流程;
3、将用户身份认证集中与单一的web应用,让用户简化他们的密码管理,从而提高安全性,同时在修改认证逻辑时也只需要在一处修改。
CAS协议介绍:
首先贴出一张CAS协议框架图:
对上面的框架进行简单的解析:当浏览器第一次访问某个web server(这个web server通常和CAS Client在一起)的受保护资源的时候,CAS Client会将这个请求重定向到CAS Server,接下来CAS Server就要完成对Web Browser的认证,通常会有一个登录页面出现,验证成功之后,针对发送这个请求的User,CAS Server会产生并保存一个 Service Ticket,并将这个ST返回给CAS Client,CAS Cient再将刚用户发送的访问受保护资源的请求后面加上这个ST并发送给CAS Server,CAS Server对这个ST进行验证,如果通过就会产生一个session(在上图中没有显示表现出来),这个session是一个xml形式的数据,里面可能包括用户的用户名、ST创建时间,上次活动时间等等信息;不通过则拒绝访问。CAS Client会保存这个session,这样一次登录成功之后,在有效的时间段内就可以利用这个session完成验证(5、6步