一、介绍
要实现SSO,需要以下主要的功能:
所有应用系统共享一个身份认证系统(Server):统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。
所有应用系统(Client)能够识别和提取ticket信息:要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

二、CAS
cas是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO)。项目地址
CAS 包括两部分: CAS Server 和 CAS Client 。
CAS Server 负责完成对用户的认证工作 , 需要独立部署 , CAS Server 会处理用户名 / 密码等凭证(Credentials) 。
CAS Client与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。负责处理对客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向到 CAS Server 进行认证。
CAS流程:

注: 业务系统需要向SSO服务器验证ST是否有效,以防SSO随便给业务系统一个ST,那么业务系统是不能确定这个ST是用户伪造的,还是真的有效,所以要拿着这个ST去SSO服务器再问一下,这个用户给我的ST是否有效,是有效的我才能让这个用户访问。
三、XXL-SSO 分布式单点登录框架
拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性。项目地址
基于Cookie单点登录架构:

注:session和token参考