SSO单点登陆实战及遇到的问题

SSO单点登录


单点登录:Single Sign On,它的出现致力于提供分布式项目中的用户登录和注销操作,使之只需要一次登陆即可在所有其他系统中无需登陆。注销同理,在任一系统中注销其他系统也会退出登陆。这样各个系统无需有登陆退出功能,统一进行用户授权。 比如阿里系的淘宝和天猫,很明显地我们可以知道这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。

单系统回顾


首先,HTTP是无状态的协议,服务器无法直接确认用户的信息。于是乎,W3C就提出了:给每一个用户都发一个通行证,无论谁访问的时候都需要携带通行证,这样服务器就可以从通行证上确认用户的信息。通行证就是Cookie。

如果说Cookie是检查用户身上的”通行证“来确认用户的身份,那么Session就是通过检查服务器上的”客户明细表“来确认用户的身份的。Session相当于在服务器中建立了一份“客户明细表”。

HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一个用户。于是乎:服务器向用户浏览器发送了一个名为JESSIONID的Cookie,它的值是Session的id值。其实Session是依据Cookie来识别是否是同一个用户。

所以,一般我们单系统实现登录会这样做:

  • 登录:将用户信息保存在Session对象中
    如果在Session对象中能查到,说明已经登录;
    如果在Session对象中查不到,说明没登录(或者已经退出了登录)
  • 注销(退出登录):从Session中删除用户的信息
  • 记住我(关闭掉浏览器后,重新打开浏览器还能保持登录状态):配合Cookie来用

CAS实现


实践中的问题

  • 单点登出返回的页面仍旧显示为登陆成功的,刷新后才会跳转到cas服务端登陆页面.

参考资料

什么是单点登录 -知乎·Java3y
未完待续。。。

本文已结束 ❤ 感谢阅读
觉得文章不错,赞赏站长一包辣条( •̆ ᵕ •̆ )◞ ❤
0%