单点登陆

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失效所有终端验证都失效的情况。

posted @ 2019-03-07 15:30  骚皮皮  阅读(341)  评论(0编辑  收藏  举报