名词介绍:
CAS: 英文全称为“Central Authentication Service”,中文名称为“中央认证服务”。CAS是耶鲁大学(Yale University)发起的一个开源项目,旨在为Web应用系统提供一种可靠的单点登录方法。
单点登录: 英文全称为“SingleSignOn”,缩写为“SSO”。用户使用多个软件系统时,常常需要在每个软件系统中进行登录操作。“单点登录”技术可以简化用户登录多个软件系统的操作步骤,用户只需要在统一的登录界面下完成登录,就可以轻松访问多个软件系统。
TGT: 英文全称为“Ticket Granting Ticket”。TGT是CAS为用户签发的用于标识该用户SSO会话的信息,存储在TGC中。
TGC: 英文全称为“Ticket Granting Cookie”。TGC是用于存储TGT的Cookie。
ST: 英文全称为“Service Ticket”,如果CAS服务允许用户访问某个应用,CAS服务会给生成一个ST发给用户(默认有效时间为10秒),用户将ST发给需要访问的应用后,应用可以请求CAS核实该ST的有效性(默认只允许核实一次)。
单点流程
- 用户访问受保护资源app1,访问没有授权,重定向CAS服务器。
- CAS服务器拿取浏览器中TGC,判断服务器中是否有对应的TGT。
- 没有对应的TGT,返回登录页,用户登录后,在CAS生成TGT与TGC,返回TGC给浏览器,携带着ticket。
- 受保护资源app1获取ticket,去CAS服务器验证此票据,CAS服务器返回XML文档(登录是否成功,身份信息)。
- 解析XML文档,获取信息,生成JSESSIONID,返回JSESSIONID给浏览器。
- 可以访问受保护资源。