场景应用:图解实现单点登录系统设计

流楚丶格念 流楚丶格念     2022-10-23     459

关键词:

文章目录

单点登录概念

问题引出

很早期的公司,一家公司可能只有一个Server,慢慢的Server开始变多了。每个Server都要进行注册登录,退出的时候又要一个个退出。用户体验很不好!你可以想象一下,上豆瓣 要登录豆瓣FM、豆瓣读书、豆瓣电影、豆瓣日记…真的会让人崩溃的。我们想要另一种登录体验:一家企业下的服务只要一次注册,登录的时候只要一次登录,退出的时候只要一次退出。怎么做?

这就用到了我们的单点登录系统。

概念

单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分。

单点登录步骤

登录

相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。

这个过程,也就是单点登录的原理,用如下UML序列图说明流程:


下面对上图简要描述:

  1. 用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数;
  2. sso认证中心发现用户未登录,将用户引导至登录页面;
  3. 用户输入用户名密码提交登录申请;
  4. sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌;
  5. sso认证中心带着令牌跳转会最初的请求地址(系统1);
  6. 系统1拿到令牌,去sso认证中心校验令牌是否有效;
  7. sso认证中心校验令牌,返回有效,注册系统1;
  8. 系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源;
  9. 用户访问系统2的受保护资源;
  10. 系统2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数;
  11. sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌;
  12. 系统2拿到令牌,去sso认证中心校验令牌是否有效;
  13. sso认证中心校验令牌,返回有效,注册系统2;
  14. 系统2使用该令牌创建与用户的局部会话,返回受保护资源。

用户登录成功之后,会与sso认证中心及各个子系统建立会话,用户与sso认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过sso认证中心,全局会话与局部会话有如下约束关系:

  • 局部会话存在,全局会话一定存在;
  • 全局会话存在,局部会话不一定存在;
  • 全局会话销毁,局部会话必须销毁

注销

单点登录自然也要单点注销,在一个子系统中注销,所有子系统的会话都将被销毁,用如下UML序列图说明流程:

sso认证中心一直监听全局会话的状态,一旦全局会话销毁,监听器将通知所有注册系统执行注销操作。下面对上图简要说明:

  1. 用户向系统1发起注销请求;
  2. 系统1根据用户与系统1建立的会话id拿到令牌,向sso认证中心发起注销请求;
  3. sso认证中心校验令牌有效,销毁全局会话,同时取出所有用此令牌注册的系统地址;
  4. sso认证中心向所有注册系统发起注销请求;
  5. 各注册系统接收sso认证中心的注销请求,销毁局部会话;
  6. sso认证中心引导用户至登录页面

部署

单点登录涉及sso认证中心与众子系统,子系统与sso认证中心需要通信以交换令牌、校验令牌及发起注销请求,因而子系统必须集成sso的客户端,sso认证中心则是sso服务端,整个单点登录过程实质是sso客户端与服务端通信的过程,用如下图说明流程:


sso认证中心与sso客户端通信方式有多种,这里以简单好用的httpClient为例,web service、rpc、 restful api都可以。

单点登录实现方法

我们使用SSO-Token的方式,因为共享session的方式不安全,所以我们不再以session-id作为身份的标识。

我们另外生成一种标识,把它取名SSO-Token(就是上述序列图的令牌:Ticket),这种标识是整个server群唯一的,并且所有server群都能验证这个token,同时能拿到token背后代表的用户的信息。

springsecurity基于oauth2的sso单点登录怎样做?一个注解搞定

...免除多次登录的烦恼。本文主要介绍同域和跨域两种不同场景单点登录的实现原理,并使用SpringSecurity来实现一个最简单的跨域SSO客户端。 单点登录主流都是基于共享cookie来实现的,下面分别介绍同域和跨域下的两种场景具... 查看详情

如何设计一个单点登录系统?

...念,一个好的单点登录系统应该具备的特点以及本人亲自实现的一个单点登录系统几方面做了些介绍,这篇文章主要介绍下具体实现方案。1.1传统SSO实现方案-登录1.2传统SSO实现方案-登出图1.1为传统SSO实现方案中登录流程时序图... 查看详情

javaweb应用如何实现单点登录

...,并要求客户端在之后的每次请求中携带它们。在这样的场景下,使用Cookie无疑是最方便的,因此我们一般都会将Session的ID或Token保存到Cookie中,当服务端收到请求后,通过验证Cookie中的信息来判断用户是否登录。单点登录(Sing... 查看详情

单点登录实现原理和单点登录服务器设计

sso单点登录是什么java实现SSO什么是SSOSSO(SingleSignOn)单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A,B,C三个系统,在A处登录过后,再访问B系统,B系统就已经处于了... 查看详情

单点登录实现原理和单点登录服务器设计

...xff0c;并且持有相同的信息。当然这个特性意味着它的使用场景是:同一公司下的不同子系统,因为对于SSO来说,每一个子系统拥有的信息都一样,是用户的全部信息,如果是不同公司,那这肯定不合适。现... 查看详情

单点登录(sso)和多点登录

...登录能得到其他所有系统的信任。SSO(单点登录)的应用场景:单点登录在大型网站使用非常频繁,例如阿里巴巴网站,在网站的背后是成白上千的子系统,用户的一次操作可能涉及到几十个子系统的协作,如果每个子系统都需... 查看详情

10-单点登录系统拓展实现(自己尝试实现)(代码片段)

...r对象逻辑实现启动服务进行访问测试认证服务工程中Feign应用业务描述添加Feign依赖Pojo对象逻辑实现Feign接口逻辑实现调用Feign接口逻 查看详情

如何设计一个单点登录系统?

...过程中分别应该承担的职责,本文将重点聊一下具体技术实现,源码地址:https://github.com/zhoudapeng/zsso首先聊服务端的实现,毕竟服务端是整个单点登录系统的大脑提供登录页,这个是登录的基础,所有的接入方在发现当前用户... 查看详情

单点登录实现方案

...rpc、restfulapi?都可以,考虑各系统采用B/S架构,这里我们应用普遍的httpClient即可。实现原理:SSOClient拦截子系统未登录用户请求,跳转至?sso?认证中心接收并存储?sso?认证中心发送的令牌与?SSOServer?通信,校验令牌的有效性建立局... 查看详情

求解!单点登录怎么实现的?

...流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。  企业应用集成(EAI)。企业应用集成可以在不同层面上进行:例如在数据存储层面上的“数据... 查看详情

单点登录认证方案思路,求好思路回复

...存在:  1、当前系统界面连接其他系统的界面,(场景:多系统集成一个系统)  2、当前系统访问其他系统的有验证的服务接口,(场景:访问被授权的系统的 查看详情

如何为我的场景实现单点登录?

】如何为我的场景实现单点登录?【英文标题】:HowtoachieveSingleSignOnformyscenario?【发布时间】:2017-10-0812:40:38【问题描述】:我在SpringMVC和ApacheShiro框架中开发了三个Web应用程序,分别是App1、App2和App3。App1:App1有自己的用户和角... 查看详情

单点登录实现(代码片段)

...一次,该用户的身份信息就可以被系统中的多个主机上的应用所识别,不需要在访问每个应用时再分别进行登陆。二、工程目录    该工程采用springsession+redis完成session共享; sso-c 查看详情

sso单点登录详解

...绍什么是SSO?SSO有什么好处?SSO设计与实现核心应用与依赖用户登录状态的存储与校验用户登录/登录校验用户登出跨域登录、登出说明SSO介绍什么是SSO?SSO英文全称SingleSignOn,单点登录。SSO是在多个应用系统中&#x... 查看详情

八幅漫画理解使用jsonwebtoken设计单点登录系统

...15/09/07/user-authentication-with-jwt/ 上次在《JSONWebToken-在Web应用间安全地传递信息》中我提到了JSONWebToken可以用来设计单点登录系统。我尝试用八幅漫画先让大家理解如何设计正常的用户认证系统,然后再延伸到单点登录系统。如... 查看详情

什么是单点登录?单点登录的三种实现方式

...,是使用cookie作为媒介,存放用户凭证。 用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie并进行校验,校验通过则登录当前用户。不难发现以上方式把信任存... 查看详情

单点登录

...流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。单点登录的实现方式 以cookie作为凭证媒介    最简单的单点登录实现方式,是使... 查看详情

单点登录(sso)初识

...录英文全称SingleSignOn,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。普通的登录认证机制cookiesession同域下(顶级域名相同,子域不同)的单点登陆(Cookie是不能跨域的... 查看详情