单点登录系统(Central Authentication Server)

本文最后更新于:2022年5月4日 晚上

应用场景

  • 分布式系统的用户授权验证

优点

  • 由于HTTP协议的跨域限制,不同域名无法共用同一处的Cookies. CAS可以做到用户一次登录就可以在不同的域名网站下无障碍的通过

原理

访问

  • 用户端[4]访问装有CAS客户端的网站[1]
  • [1]发现[4]并未携带cookies或cookies失效
  • [1]返回重定向到CAS服务端[3],并附带上[1]的URL

重定向

  • [4]访问[3]

用户认证

  • [3]返回登录界面到[4]
  • [4]输入正确的用户名和密码,并发送给[3]
  • [3]验证成功后,生成一个ST(Server Ticket).返回一个重定向到[1]的URL并附带上这个ST.同时在cookies中设置一个名为TGC(Ticket Granted Cookie)的TGT(Ticket Granted Ticket). 如果向[3]发送TGC可以查询到对应的TGT,通过TGT可以生成ST

验证

  • [4]访问[3]发来的重定向URL,访问[1].
  • [1]拿到[4]发送来的ST后,访问[3]对该ST进行验证
  • [3]验证该ST有效后,返回给[1]
  • [1]收到[3]的验证后,生成一个[4]的session,并把该session设置在[4]的cookies里.下次[4]再次访问时就可以根据这个session进行验证,不用再通过[3]

复用

此时,如果[4]还想继续访问一个不同域名但同CAS服务器的网站[A]

  • [A]会返回一个重定向到[3]的URL给[4]
  • [4]在访问[3]的时候会携带TGC
  • [3]在确认该TGC有效后,会生成一个对应的ST返回给[4]并重定向到[A]
  • [4]携带该ST访问[A]
  • [A]拿到该ST后向[4]发起验证,验证通过后存在session里并写入[3]的cookies
  • 当下次[4]再访问[A]时,只需要携带这个cookies,不需要再验证

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!