单点登陆

Posted sjp007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单点登陆相关的知识,希望对你有一定的参考价值。

1.简介

SSO:英文全称Single Sign On,单点登陆。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。一般SSO体系中主要角色有三种:User(多个)Web应用(多个)SSO认证中心(一个)

2. 较流行的实现手段

单点登陆最有名的开源方案当属CAS,全称为Central Authentication Service即中央认证服务。CAS是由Yale大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的单点登录解决方法

除此之外,为了促进业务的进一步发展,必须允许第三方应用接入,由此引申出用户管理的第二个模块:授权登陆。现在流行的授权登陆就是OAuth2.0协议,基本上已经成为事实上的标准,其他私有协议漏洞多,第三方接入也麻烦。

3. 具体实现

3.1. CAS

基础模式 SSO 访问流程主要有以下步骤:

1. 访问服务: SSO 客户端发送请求访问应用系统提供的服务资源。

2. 定向认证: SSO 客户端会重定向用户请求到 SSO 服务器。

3. 用户认证:用户身份认证。

4. 发放票据: SSO 服务器会产生一个随机的 Service Ticket 

5. 验证票据: SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。

6. 传输用户信息: SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。

下面是 CAS 最基本的协议过程

 技术图片

3.2 Session共享

 技术图片

 

基于RedisSession共享方案。将Session存储于Redis上,然后将整个系统的全局Cookie Domain设置于顶级域名上,这样SessionID就能在各个子系统间共享。

缺点:

1.redis中的session存储对象每个子系统都要存在,导致session使用诸多限制。

2.跨顶级域名无法处理。

3.3基于openId的单点登陆

 技术图片

为了保证多终端登陆,每次用户通过用户名/密码登录时,产生一个OpenId保存在Redis里,并且设定过期时间,这样多个终端登录就会有多个OpenId与之对应,不再会存在一个OpenId失效所有终端验证都失效的情况。

以上是关于单点登陆的主要内容,如果未能解决你的问题,请参考以下文章

单点登陆的测试

08-微服务版单点登陆系统(SSO)实践(2107)

SpringBoot实现用户统一管理与单点登陆

单点登陆TOKEN的处理

09-微服务版的单点登陆系统设计及实现

同一账户同时只能在一处登陆(单点登陆)