美文网首页php基础原理JAVA
常用的两种web单点登录SSO的实现原理

常用的两种web单点登录SSO的实现原理

作者: 左木北鱼 | 来源:发表于2019-01-18 09:41 被阅读2次

    一、理解单点登录

    1. 单点登录SSO(Single Sign On):说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。

    2. 实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下几个:

      • 存储信任
      • 验证信任

      只要解决了以上的问题,达到了开头讲得效果就可以说是SSO。

    二、实现

    1. Cookie实现最简单SSO
    cookie实现最简单sso流程图
    • 该方案是把信任存储在客户端的Cookie里,这种方法虽然实现方便但立马会让人质疑两个问题:
      • Cookie不安全
      • 不能跨域免登
        第一个问题一般都是通过加密Cookie来处理;
        第二个问题是硬伤,其实这种方案的思路的就是要把这个信任关系存储在客户端,要实现这个也不一定只能用Cookie,用flash也能解决,flash的Shared Object API就提供了存储能力。
    2. 大型系统会采取在服务端存储信任关系的做法,实现流程如下所示:
    服务端存储信任关系
    • 该方案就是要把信任关系存储在单独的SSO系统(暂且这么称呼它)里,说起来只是简单地从客户端移到了服务端,但其中几个问题需要重点解决:

      • 如何高效存储大量临时性的信任数据
      • 如何防止信息传递过程被篡改
      • 如何让SSO系统信任登录系统和免登系统
      1. 对于第一个问题,一般可以采用类似与memcached的分布式缓存的方案,既能提供可扩展数据量的机制,也能提供高效访问;
      2. 对于第二个问题,一般采取数字签名的方法,要么通过数字证书签名,要么通过像md5的方式,这就需要SSO系统返回免登URL的时候对需验证的参数进行md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候,需把这个token传给SSO系统,SSO系统通过对token的验证就可以辨别信息是否被改过;
      3. 对于最后一个问题,可以通过白名单来处理,说简单点只有在白名单上的系统才能请求生产信任关系,同理只有在白名单上的系统才能被免登录。
    3. 通过第二种方案的演变,可以使用发放票据的方式实现websso登录:
    发放票据实现sso

    该方案客户端只做票据的发放和获取,不涉及用户信息传输,用户信息均可交给子系统和SSO系统之间处理,更有效保护用户隐私。

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

    原文地址

    相关文章

      网友评论

        本文标题:常用的两种web单点登录SSO的实现原理

        本文链接:https://www.haomeiwen.com/subject/lsygdqtx.html