单点登录系统(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 协议 ,转载请注明出处!