`

单点登录SSO的实现原理

 
阅读更多

单点登录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

分享到:
评论

相关推荐

    SSO单点登录实现与实现原理

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在多个相互关联的应用系统中只需要登录一次,即可访问所有系统,而无需再次输入凭证。这种技术在现代企业环境中非常常见,因为它提供了便捷的用户体验并...

    CAS实现sso单点登录原理

    "CAS实现sso单点登录原理" CAS(Central Authentication Service)是Yale大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的单点登录解决方法(属于Web SSO)。CAS开始于2001年,并在2004年12月...

    单点登录SSO解决方案之SpringSecurity+JWT实现.docx

    ### 单点登录SSO解决方案之SpringSecurity+JWT实现 #### 一、单点登录(SSO)概述 单点登录(Single Sign-On,简称SSO)是一种认证机制,允许用户仅通过一次登录就能访问同一域下的多个应用程序和服务。这种机制...

    单点登录sso的原理与java实现详细讲解与示例(文档与源码)

    单点登录(Single Sign-On,简称SSO)是一种网络应用中的身份验证机制,它允许用户在一次登录后,就可以在多个相互独立的应用系统之间自由切换,而无需再次进行身份验证。这种技术极大地提升了用户体验,同时也简化...

    关于SSO单点登录的简单实现

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次进行身份验证。这个过程提高了用户体验,同时也简化了安全管理。在本文中,我们将探讨SSO的基本原理...

    基于JWT实现SSO单点登录流程图解

    基于JWT实现SSO单点登录流程图解 基于JWT实现SSO单点登录流程图解是指使用JSON Web Token(JWT)来实现单点登录(SSO)的机制。在这种机制中,用户只需要登录一次,就可以访问多个应用服务器上的资源,而不需要再次...

    SSO单点登录

    asp.net 跨域单点登录实现原理: 当用户第一次访问web应用系统1的时候,因为还没有登录,会被引导到认证中心进行登录; 根据用户提供的登录信息,认证系统进行身份效验,如果 通过效验,返回给用户一个认证的凭据;...

    跨服务器登录验证(单点登录SSO)过程和Java实现

    单点登录(Single Sign-On,简称SSO)是一种网络用户身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入认证信息。这种机制极大地提高了用户体验,减少了用户记忆多套账号密码的困扰,...

    单点登录SSO原理.docx

    单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。在大型企业或网站中,SSO的实施大大提升了用户体验,减少了重复认证的过程,同时也...

    Java进阶SSO单点登录技术CAS-快速上手与原理探究视频教程

    本课程主要通过CAS来实现SSO,本教程会从最基本的基础知识讲起,由浅入深再到实战,完成多应用的单点登录功能。 本课程内容如下: 1、 什么是SSO和CAS 2、 CAS Server服务端和客户端的搭建和配置 3、 单点登录和单...

    SSO 单点登录(java)

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后,能够访问多个相互关联的应用系统,而无需再次输入凭证。在Java环境下实现SSO,通常涉及以下几个核心知识点: 1. **原理**:SSO的核心思想...

    sso 单点登录原理文档附带流程图片

    "SSO单点登录原理文档附带流程图片" 单点登录(SSO)是一种用户认证机制,允许用户在访问多个应用系统时,只需要输入一次用户名和密码。这种机制可以减少用户登录的时间和出错的可能性,提高工作效率和安全性。 ...

    .net单点登录sso的实现

    .NET下的单点登录(Single Sign-On,简称SSO)是一种让用户在多个应用系统间自由切换,只需要一次登录验证的身份管理技术。它提升了用户体验,减少了密码管理的复杂性,尤其适用于企业内部或拥有多个子系统的环境。...

    单点登录 SSO 实例

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次认证即可访问多个相互关联的系统。在SSO系统中,客户端和服务端是两个关键组成部分。 客户端通常是指用户交互的...

    java单点登录sso源码

    Java单点登录(Single Sign-On,SSO)是一种网络访问控制机制,允许用户在一次登录后,无需再次认证即可访问多个应用系统。SSO的核心思想是:用户只需要在一个可信的身份认证中心(Identity Provider,IdP)进行身份...

    ssm redis实现sso单点登录

    总结,使用SSM和Redis实现SSO单点登录,能够简化企业级应用的登录流程,提高用户体验。通过合理的设计和配置,可以构建出高效、安全的SSO解决方案。在这个过程中,Spring Security、Spring MVC、MyBatis和Redis各自...

    SSO单点登录解决方案

    SSO(Single Sign-On)单点登录是一种网络访问控制机制,允许用户在一次登录后,无需再次认证即可访问多个相互信任的应用系统。这种技术极大地提高了用户体验,减少了密码管理的复杂性,同时也为管理员提供了更高效...

    sso单点登录

    单点登录(Single Sign-On,简称SSO)是一种网络访问控制机制,允许用户在一次登录后,无需再次认证即可访问多个相互信任的应用系统。这种方式极大地提高了用户体验,减少了用户记忆和输入多个账号密码的麻烦,同时...

Global site tag (gtag.js) - Google Analytics