单点登录sso的实现原理

喻聪 喻聪     2022-08-26     765

关键词:

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下几个:

  • 存储信任
  • 验证信任

只要解决了以上的问题,达到了开头讲得效果就可以说是SSO。最简单实现SSO的方法就是用Cookie,实现流程如下所示:

不然发现以上的方案是把信任存储在客户端的Cookie里,这种方法虽然实现方便但立马会让人质疑两个问题:

  • Cookie不安全
  • 不能跨域免登

对于第一个问题一般都是通过加密Cookie来处理,第二个问题是硬伤,其实这种方案的思路的就是要把这个信任关系存储在客户端,要实现这个也不一定只能用Cookie,用flash也能解决,flash的Shared Object API就提供了存储能力。

一般说来,大型系统会采取在服务端存储信任关系的做法,实现流程如下所示:

以上方案就是要把信任关系存储在单独的SSO系统(暂且这么称呼它)里,说起来只是简单地从客户端移到了服务端,但其中几个问题需要重点解决:

  • 如何高效存储大量临时性的信任数据
  • 如何防止信息传递过程被篡改
  • 如何让SSO系统信任登录系统和免登系统

对于第一个问题,一般可以采用类似与memcached的分布式缓存的方案,既能提供可扩展数据量的机制,也能提供高效访问。对于第二个问题,一般采取数字签名的方法,要么通过数字证书签名,要么通过像md5的方式,这就需要SSO系统返回免登URL的时候对需验证的参数进行md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候,需把这个token传给SSO系统,SSO系统通过对token的验证就可以辨别信息是否被改过。对于最后一个问题,可以通过白名单来处理,说简单点只有在白名单上的系统才能请求生产信任关系,同理只有在白名单上的系统才能被免登录。

以上只是提供了些简单的实现技术,但需要强调的是这只是技术实现而已,仅仅是为了解决上面谈到的一些问题,SSO本身来说并不是什么高科技,有了这个认识比较有利于我们深入探索SSO

 

转:http://blog.csdn.net/cutesource/article/details/5838693

其他参考:

http://www.cnblogs.com/yupeng/archive/2012/05/24/2517317.html

 

单点登录sso的实现原理(转)

单点登录SSO(SingleSignOn)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴... 查看详情

cas实现sso单点登录原理

1.      CAS 简介1.1.  WhatisCAS ?CAS ( CentralAuthenticationService )是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录 查看详情

cas实现sso单点登录原理

1.      CAS 简介1.1.  WhatisCAS ?CAS ( CentralAuthenticationService )是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录 查看详情

sso单点登录

 单点登录SSO的实现原理单点登录SSOSSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析 查看详情

sso单点登录的发展由来以及实现原理

单点登录以及权限,在很早之前都有写过,不过都比较简单,今天就具体说一下,以及下一步要做的1、web单系统应用早期我们开发web应用都是所有的包放在一起打成一个war包放入tomcat容器来运行的,所有的功能,所有的业务,... 查看详情

sso单点登录实现方案

最近打算做个项目,需要用到单点登录,搜了看了一下资料找到一种单点登录方案,特此记录。一、实现原理    将登录系统单独摘出来,做成一个登录子系统。请求登陆时候访问这个子系统,当登陆验证通过的时... 查看详情

单点登录基本原理

...可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。单点登录英文全称SingleSignOn,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。 image如... 查看详情

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

参考技术A单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼。本文主要介绍同域和跨域两种不同场景单点登录的实现原理,并使用SpringSecurity来实现一个最简... 查看详情

单点登录实现方案

单点登陆实现方案设计整体流程:设计思路:单点登录涉及?sso?认证中心与众子系统,子系统与?sso?认证中心需要通信以交换令牌、校验令牌及发起注销请求,因而子系统必须集成?sso?的客户端,sso?认证中心则是?sso?服务端,整个... 查看详情

sso单点登录,单点登录原理图,单点登录图解,单点登录

sso单点登录,单点登录原理图,单点登录图解,单点登录 ==============================?Copyright 蕃薯耀2017年11月20日http://www.cnblogs.com/fanshuyao/  ==============================?Copyright 蕃薯耀2017年11月20日ht 查看详情

第十篇单点登录原理和jwt实现(代码片段)

单点登录原理及JWT实现波波烤鸭一、单点登录效果  首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址:https://gitee.com/xuxueli0323/xxl-sso?_from=gitee_search把案例代码直接导入到IDEA中  然后分别修改下server... 查看详情

第十篇单点登录原理和jwt实现(代码片段)

单点登录原理及JWT实现波波烤鸭一、单点登录效果  首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址:https://gitee.com/xuxueli0323/xxl-sso?_from=gitee_search把案例代码直接导入到IDEA中  然后分别修改下server... 查看详情

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

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

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

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

ebs单点登录sso

参考技术A单点登录是指在多个业务应用系统中,用户只需要登陆一次,就可以访问所有有权限的业务应用系统。在企业内部使用单点登录还是挺常见的,记录一下单点登录是什么主要是发现OracleEBS也能单点登录,抽空特意了解... 查看详情

cas实现单点登录sso

一CAS是什么?为Web应用系统提供一种可靠的单点登录解决方法的一个项目,是通过共享cookie实现的。二CAS原理 CAS是由CASServer和CASClient组成:1.架构图: TGC:存放用户身份认证凭证的cookieST:服务票据,... 查看详情

实战模拟│单点登录sso的实现

查看详情

单点登录(sso)原理(代码片段)

在整个SSO流程当,有两个流程非常重要:  第一个是用户没有登录系统到登录系统的过程;  第二是用户在一个系统当中已经登录(例如在OA系统中登录了),但又想进入另一个系统(例如进入PRO系统)的过程一、用户没有... 查看详情