单点登陆使用场景:当有多个系统,一个账号访问多个系统。只需要一次登陆。一个客户端访问多个服务器。
机制:(1)在cookie存储相应的账号和密码(2)通过redis访问 (3)通过访问固定的单点登陆系统的接口
CAS实现单点登录SSO执行原理探究(终于明白了):
http://blog.csdn.net/javaloveiphone/article/details/52439613
上面这篇博客讲清了其中的原理,没有具体的实现
流程:浏览器访问客户端,客户端判断是否有session,没有,判断是否有ticket。没有,则跳转到认证中心,然后 登陆,跳回链接加入ticket,再去访问客户端,客户端获取ticket,与认证中心确认,通过则登陆成功。
问题:1、如果登陆后,一直访问A系统,当认证中心session过期,如果登陆B系统。
答:好像是相互独立,只有session过期后才访问认证中心。也就是说,B系统需要登陆。
2、登陆后,认证中心传回ticket和sessionID,是要写入cookie吗?
答:会写入cookie,认证中心不时用session存储的,而是把TGT的id的存放在用户浏览器的cookie中。当用户访问B系统时,跳转到认证中心获取cookie的值来判断。(具体看上面那个链接博客)
共享session使用场景:当系统部署到多台服务器,通过nginx动态访问,不需要多次登陆
机制:(1)通过redis访问
cas实现共享session(这个比较简易)
http://blog.csdn.net/dodolzg/article/details/43833545