概述
单点登录指的是有一个中央的单点登录服务器,各个子系统和这个中央的单点登录服务器打交道,比如有A,B两个子系统。
A登录后,B系统就不用再登录,直接可以访问,当其中有一个子系统选择注销时,那么所有的子系统将都不能访问。
术语:
GID ,CAS服务器的全局cookieId
SID, 子系统登录后产生的登录成功的ID
单点登录的步骤如下:
1.客户端方法子系统A,如果子系统已经登录,那么我们就直接访问系统。
2.如果子系统没有登录的时候,那么子系统将会跳转到CAS服务器。
3.CAS服务器会判断 全局的登录标志是否存在(GID)。
1.如果存在
则表示其他系统已经登录过,那么CAS服务器会产生一个随机码,在跳转回子系统A。
子系统A使用这个随机码(SID),发送给CAS服务器,服务器验证这个随机码是有效的,
CAS会将这个随机码和子系统的URL,存入到全局标志的一个map中。
Map<String,Map<String,String>> map;
键为 全局cookie标志(GID),值为 MAP,map 结构为 键 子系统随机码(SID),值为 子系统的URL
子系统将存储这个随机码和session,保存到一个map中,并标记为子系统已经登录。
2.如果不存在
那么CAS跳转到登录界面,登录成功后,产生登录的全局COOKIE(GID)。
并产生一个随机码(SID),跳转到子系统A,其他的步骤其实和上面说的一致。
2.单点退出
1.子系统跳转到cas服务器的登出URL
2.登出URL会访问 GID ,通过GID可以,查找出 登录子系统的集合。
3.遍历这个集合,向子系统发出退出登录命令,即发送 SID到各个子系统。
4.子系统收到SID后,找出关联的session,并将session销毁,表示子系统退出。
5.将全局cookie设置为删除。