CAS单点登录学习
一、单点登录
单点登录是一种认证和授权机制,它提供了一个统一的机制来管理用户的认证和实现,决定用户对应用程序和数据的访问的商业规则。
在单点登录系统中, 用户只需要在登录时提供一次用户认证信息(如用户账号和密码),通过认证以后,在访问企业门户中的各个子系统时无需再提供用户认证信息,而是由单点登录系统完成对用户的认证。
二、目前单点登录的开源软件
2.1 OpenSSO
OpenSSO是基于Sun Java System Access Man— ager实现的,是Sun公司支持的一个开源的SSO项目。OpenSSO体系结构设计合理,功能比较强大。
缺点是客户端支持不够广泛,几乎只对基于J2EE的应用支持较好。
2.2 JOSSO
JOSSO也是一个用Java语言写的单点登录产品,通常认为比OpenSSO更成熟一些。JOSSO支持的客户端包括Java,PHP和ASP等语言。
2.3 CAS
耶鲁大学开发的单点登录CAS,是一个独立于平台的,易于理解的开源软件。CAS优点很多,包括设计理念先进、体系结构合理、配置简单、客户
端支持广泛、技术成熟等。
CAS服务器是SSO领域著名的软件产品,在许多大学,如耶鲁大学、剑桥大学和香港科技大学中得到应用。
三、CAS的体系结构
在CAS模型中共有三个实体:用户浏览器、CAS客户端和CAS服务器 。
3.1 用户浏览器
它需要满足三个条件才能在CAS中使用,一是拥有加密引擎支持HTTPS;二是能支持HTTP重定向;三是能存储安全cookie。
3.2 CAS客户端(CAS Client)
(屏蔽和转发)装载了CAS客户端的应用程序。它只向被CAS服务器认证的用户提供服务。当有对本地Web应用的受保护资源的访问请求,并且需要对请求方进行身份认证,Web应用不再接受任何的用户名密码等类似的凭证,而是重定向到CAS服务器进行认证。
3.3 CAS服务器(CAS Server)
单点登录服务的核心,采用集中式认证,验证用户名和密码用户名/密码等凭证,CAS的认证方式跟CAS协议是分离的,这个认证的实现细节可以自己定制和扩展。它扮演两个角色:一是认证用户;二是传送和确认被认证用户的身份。
四、CAS中核心关键词
4.1 Ticket—Granting Cookie(TGC)
授权的票据证明;
4.2 Ticket Granting Ticket(TGT)
票据授权票据,获取这样一张票据后,申请各种其他服务票据(ST)便不必再提交身份认证信息;
4.3 Ticket—Granting Service(TGS)
票据授权服务,索取TGT,发放ST;
4.4 Service Ticket(ST)
服务票据,由TGS发放。任何一个系统都需要拥有一张有效的Service Ticket才能访问域内部的应用。如果能正确接收Service
Ticket,说明在CAS Client与CAS Server之间的信任关系已经被正确建立起来,通常为一张数字加密的证书。
五、CAS协议
步骤1 用户通过Web浏览器访问已部署CAS Client的Web应用,CAS Client的Filter会分析http中是否含有Service Tickets,如果有则进入允许访问,如没有则进入步骤2。
步骤2 CAS Client将用户的访问请求重新定向到CAS Server。用户的Web浏览器将进入统一身份认证的登录界面。
步骤3 用户通过Web提供用户名/密码,CAS Server将在LDAP服务器(认证机制可以自己写的程序也可以是标准的认证方法)中查询该用户提供的用户名/密码是否正确。
步骤4 如果正确,CAS server会产生一个随机的Service Ticket,并将该Ticket缓存,然后重新将请求定向到用户所请求的Web应用,这次请求将会附带生成 Service Ticket,并为客户端浏览器设置一个Ticket Granted Cookie(TGC)。
步骤5 CAS Client将Ticket返回给CAS server。CAS Server将Ticket与缓冲里的Ticket列表匹配。
步骤6如果第五步顺利完成,CAS server将该用户的Username发回给CAS Client,用户则可以顺利进入该Web应用,并获得相应的身份角色。
六、安全机制
TGC/PGT通过HTTPs协议传送,且有自己的存活周期,超时则无效。
ST基于随机数生成,只能使用一次,无论ST验证是否成功,CAS Server都会将服务端的缓存中清除;
假设用户拿到ST之后,他请求服务的过程又被中断了,ST就被空置了。此时为了防止ST被截取盗用,给ST设定了比TGC短得多的存活周期;
七、本地配置
7.1 开发环境
MyEclipse10.0+tomcat7.0+JDK7.0+MySQL+CAS
CAS版本:服务器:cas-server-3.5.2 客户端:cas-client-3.2.1
下载地址:http://downloads.jasig.org/