单点登录的本质是:同一个用户只需要授信一次组织下的多个系统中的某一个子系统,授信一次过后服务端和客户端在通讯条件下达成用户登录资源生命周期的一致性,并且可以以用户主动发起方式和服务端主动方式销毁指定用户的当前登录状态下会话。
需求背景:企业服务平台
先来看有哪些需要登录的业务系统和客户端系统

技术框架选型

Redis:分布式存储JWT-Token
Tomcat:作为Servlet服务,管理无状态HTTP服务
WebSocket:建立长链接,支持移动端扫码登录
浏览器:将token存储在Cookie,有效期与Server端保持一致。第一个授信系统登录时服务端会将用户认证一次,认证成功会将Token信息放入Redis里面,与此同时会将Token信息放入Cookie,并同步设置Token失效期,(比如五分钟),授信一次就会传播登录信息到各个相互信任的子系统,同一个浏览器之间的传播方式是Cookie或者SessionStorage等传播方式,移动端之间的传播方式可以是拿到本地存储权限之后,再共享Token进行免登录,或者存储的煤价载体是SQL-lite等。
第三方认证登录也同理,只不过认证之前需要先通过第三方认证,然后再进入统一认证中心