![16055b1b40931ddc08046c7fdd1953b5.png](https://img-blog.csdnimg.cn/img_convert/16055b1b40931ddc08046c7fdd1953b5.png)
CAS它的全称是Central Authentication Service,它是用来解决单点登录的问题的。假设现在有一个云平台,上面挂了许多子系统或者其它的服务,登录这些子系统或者使用服务的话就都需要使用云平台的账号,这样就不适合在每个子系统或者服务上自己来实现登陆验证,另一种场景是某个企业存在有N多业务系统,但是这些业务各自为政,有着自己的一套用户认证机制,这样业务人员就得记住N多的用户名和密码,不堪其苦。
单点登陆(SSO)就是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它就是来解决上述提到的两个典型问题的。而CAS就是SSO的一个可靠的具体实现,它是由耶鲁大学提出的。
目前Web系统上主流有两种基础的认证方式,一种是基于Session-Cookie的传统方式,像Tomcat就已经内置了这个方式,我们几乎可以不需要另外再"加料",虽然HTTP是无状态的,我们用cookie存储了SessionID来模拟有状态的行为,用空间换时间;另一种是基于Token的JWT,登陆成功后服务端返回一个Token给前端,前端请求需要认证的接口的时候都带上这个Token,服务端本身不在存储系统上存储相关信息(当然有定制需求的话也是需要的),而是每次都计算当前Token是否有效,用时间换空间。
CAS两者都可以愉快的支持(基于JWT的可以参考看图理解JWT如何用于单点登录 -