使用CAS+redis+cookies实现单点登录(SSO)

889 阅读2分钟

前言: CAS是一个合格java开发工程师必须要掌握的知识,狐狸将自己的理解都写下来,此文章仅代表鄙人的总结和理解,如有错漏,欢迎指正...

单点登录又称之为Single Sign On,简称SSO,单点登录可以通过基于用户会话的共享,他分为两种。

1、Redis+Cookie分布式会话来实现【相同顶级域名;基于Redis】

2、CAS系统(中央认证服务)【不同顶级域名;独立的登录系统】

CAS实现单点登录的总结:

3个关键信息:
1、创建用户全局会话(保存在redis的用户信息)
2、全局门票ticket(存放在cas端的cookies中)
3、临时票据(一次性使用,用于在各个子系统中调用验证。)

* CAS的统一登录接口
*      目的:
*          1. 登录后创建用户的全局会话                 ->  uniqueToken
*          2. 创建用户全局门票,用以表示在CAS端是否登录  ->  userTicket
*          3. 创建用户的临时票据,用于回跳回传          ->  tmpTicket
/**
 * 举例:
 *      我们去动物园玩耍,大门口买了一张统一的门票,这个就是CAS系统的全局门票和用户全局会话。
 *      动物园里有一些小的景点,需要凭你的门票去领取一次性的票据,有了这张票据以后就能去一些小的景点游玩了。
 *      这样的一个个的小景点其实就是我们这里所对应的一个个的站点。
 *      当我们使用完毕这张临时票据以后,就需要销毁。
 */

大致的逻辑就是:

1、前端先判断用户是否有登录,即是否在cookies中有用户信息,有user信息就直接放行。

2、如果cookies中没有user信息,判断是否有临时票据,就去验证,如果通过就放行并且把有用户信息存在cookies里,下次第一步中就直接是登录状态了,如果没有临时票据,那就走登录流程

3、登录流程中,判断cookies中是否有全局门票,如果有全局门票那么就是已经登陆过了,那么就返回一个临时票据即可。如果没有全局门票,那么就跳转到cas登录页面进行登录。

参考博客:

blog.csdn.net/u013250861/…

blog.51cto.com/u_15091675/…


结语:以往都是看别人的博客进行学习技术,其中不乏有精华博客也有吊儿郎当的CV大法文章,所以决定将自己所学所用所整理的知识分享给大家,主要还是想为了后浪们少走些弯路,多些正能量的博客,如有错漏,欢迎指正,仅希望大家能在我的博客中学到知识,解决到问题,那么就足够了。谢谢大家!(转载请注明原文出处)