快速理解CAS

CAS是中央认证服务,全称为Central Authentication Service ,是一种只针对 Web应用的单点登录/单点登出协议。它允许用户通过仅向中央 CAS 服务器应用程序提供一次凭据(例如用户名密码),就能访问多个应用程序。本系统目前支持的是CAS2.0版本。

概念介绍

  • CAS Clients,客户端,通常是我们浏览器访问的web应用服务。
  • CAS Server,认证服务器,用于颁发票据以及对用户进行身份验证。
  • 局部会话,指浏览器-客户端之间的会话。
  • 全局会话,指浏览器-认证服务器之间的会话。
  • TGT(Ticket Granting Ticke),建立全局会话的凭证,包含用户信息、票据生命周期等信息。
  • TGC(Ticket Granting Cookie)),认证服务器认证成功后返回给浏览器的cookie,与存储在认证服务器上的TGT相对应,TGC和TGT类似于cookie和session的关系。
  • ST(Service Ticket),服务凭证,用于客户端验证用户身份。

CAS协议认证流程

协议认证流程分为两个部分,第一部分为未登录时浏览器向网站A请求资源的过程,可以分为以下几步:

  1. 用户通过浏览器访问网站A。
  2. 网站A对浏览器的请求进行解析,过滤器检测用户是否需要进行身份验证(AuthenticationFilter和TicketValidationFilter)。
  3. 网站A将浏览器重定向到认证服务器。
  4. 用户输入账号密码进行登录。
  5. 认证服务器向浏览器返回TGC,并将浏览器重定向回之前访问的URL,并在URL中添加参数ticket,也就是ST。
  6. 网站A携带ST去认证服务器进行认证。(这个过程对于用户来讲是不可见的)
  7. 认证成功网站A为浏览器生成cookie,并返回用户请求的资源。

第二部分是当用户在网站A已经通过了身份验证,再访问网站B。

  1. 网站B验证浏览器的cookie,但是因为网站B没有登录过,所以没有网站B的cookie。
  2. 网站B将浏览器重定向到认证服务器,浏览器访问认证服务器时会带上cookie。
  3. 认证服务器发现cookie中有TGC,验证TGC与TGT的对应关系,TGC有效。
  4. 认证服务器将浏览器重定向到网站B,并返回一个ST。
  5. 浏览器使用ST请求网站B。
  6. 网站B使用这个ST去认证服务器进行认证。
  7. 如果认证成功,网站B为浏览器生成cookie,并返回用户请求的资源。