1.小明(浏览器)去食堂找阿姨(应用系统aaa后端) 打饭
【访问aaa网页】
2.阿姨说你先去服务台(cas) 买饭票(ticket)
【重定向到cas服务,统一登陆平台,输入用户名密码登陆】
3.服务台获取到用户名密码后,打电话问学校管理处(集团的cas) 是不是有这个人【login Auth如有返回casSsoCookie】, 如果有让学校管理处把这个人的信息传过来【带着casSsoCookie请求getUserInfo】
4.服务台拿到了信息之后便
4.1给小明把这次跟集团cas的会话记录了下来
【setCookie(CAS_SSO_COOKIE:casSsoCookie, .xxxx.com.cn)】
4.2并把用户信息加密存到柜子里【redis缓存token和ticket】
【token-
t
o
k
e
n
I
d
:
u
s
e
r
I
n
f
o
加
密
】
半
小
时
【
t
i
c
k
e
t
−
{tokenId} :userInfo加密】半小时 【ticket-
tokenId:userInfo加密】半小时【ticket−{ticketId} :${tokenId} 】一分钟
4.3同时给小明把这次跟服务台的对话也记录下来
【setCookie(ARES_CAS_COOKIE:${tokenId} ,icore-aaa-sh-stg.xxxx.com.cn)】
5.服务台给了小明一个饭票【${ticketId} 】作为凭证, 小明拿了饭票回来找食堂阿姨
【用户登录成功后跳转至带有ticket的回跳地址, 也就是应用系统aaa】
6.小明带着饭票去找阿姨
【小明前端再次调用login接口,带上ticket】
7.阿姨拿着饭票去服务台确认是有效的饭票
【阿姨aaa后台请求cas validateTicket, 对前端透明】
8.服务台把柜子里锁着的用户信息给了阿姨
【redis中根据
t
i
c
k
e
t
I
d
获
取
{ticketId} 获取
ticketId获取{tokenId} ,获取userInfo加密, 删除ticket】
9.阿姨回来把饭打给了小明
【aaa后台登陆成功并返回用户信息】
半小时内不用重新登陆以及单点登陆
1.icore-aaa-sh-stg.xxxx.com.cn域名下拿到
【ARES_CAS_COOKIE:${tokenId} , icore-aaa-sh-stg.xxxx.com.cn】
2.根据tokenId找到加密柜子里的信息【token-${tokenId} :userInfo加密】
token没过期有效
3.新建一个ticket【ticket-$ticketId:${tokenId}】一分钟
4.返回上面步骤5
1.xxxx.com.cn域名下拿到
【CAS_SSO_COOKIE:casSsoCookie, .xxxx.com.cn)】
2.ssoLogin拿到用户登陆信息username userType
3.带着casSsoCookie请求getUserInfo
4.返回上面步骤4 (除去4.1)
前端小明逻辑是
路由跳转就请求login接口
接口返回不是200(就是还未登录)就会重定向到统一登录平台(找服务台)