cas单点登录原理

什么是单点登录

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。

SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

应用场景

假设你正在腾讯网首页浏览某则新闻想收藏它

你点击收藏按钮

网站提示你需要登录

你扫码或输入用户名密码登录

浏览器跳转到你之前浏览的页面

并提示你收藏成功

看完新闻你突然发现勇士队的比赛要开了

你可是勇士的忠实球迷

买了勇士的vip

此时你从浏览器打开腾讯体育

跳转到页面

你发现右上角你的会员专属图标在闪烁

然后你打开比赛沉浸之中

CAS单点登录

CAS单点登录是单点登录的一种,它是基于Cookie实现的。

重要概念

Ticket Granting ticket (TGT:可以认为是CAS Server根据用户名密码生成的一张票,存在Server端

Ticket-granting cookie (TGC) :其实就是一个Cookie,存放用户身份信息,由Server发给Client端

Service ticket (ST:由TGT生成的一次性票据,用于验证,只能用一次。相当于Server发给Client一张票,然后Client拿着这个票再来找Server验证,看看是不是Server签发的。

CAS单点登录时序图

 主要流程分析

假设服务a与服务b存在单点登录

——————————————————————

浏览器请求服务a的资源(第一次)  未携带也不存在任何认证信息

服务a的后端的response将浏览器重定向到认证中心 携带跳转地址

登录认证中心

认证中心的response将浏览器重定向到第一次请求a资源的地址并附上ticket 携带CASTGC

浏览器请求a资源的地址+ticket 

服务a利用ticket到认证中心进行验证

认证中心给服务a返回认证成功信息

服务a给浏览器发送重定向response将浏览器重定向到第一次访问服务a的地址,并设置JSESSIONID

浏览器请求服务a地址 携带JSESSIONID

服务a验证session有效并返回请求资源

——————————————————————

浏览器请求服务a的资源(第二次) 已存在JSESSIONID

服务a验证session有效并返回请求资源

——————————————————————

浏览器请求服务b的资源(第一次) 

服务b的response将浏览器重定向到认证中心 携带跳转地址

浏览器请求认证中心地址 携带CASTGC(访问服务a生成)

认证中心发现有TGC(已认证),response将浏览器重定向到服务b 携带ticket

浏览器请求服务b+ticket

服务b利用ticket到认证中心进行验证

认证中心给服务b返回认证成功信息

服务a给浏览器发送重定向response将浏览器重定向到第一次访问服务b的地址,并设置JSESSIONID

浏览器请求服务b地址 携带JSESSIONID

服务b验证session有效并返回请求资源

原文地址:https://www.cnblogs.com/jugglee/p/10570201.html