美文网首页Java 杂谈分布式程序员
单点登录简单原理及实现

单点登录简单原理及实现

作者: 紫霞等了至尊宝五百年 | 来源:发表于2019-01-13 21:53 被阅读27次

    1 定义

    单点登录(英语:Single sign-on,缩写为 SSO),一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性;
    当拥有该属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录;
    所以你会看到很多域名直接是sso.domain.com,也就是用来做单点登录
    这项功能通常是以轻型目录访问协议(LDAP)来实现;
    在服务器上会将用户信息存储到LDAP数据库中;
    相同的,单一退出(single sign-off)就是指,只需要单一的退出动作,就可以结束对于多个系统的访问权限.


    如上图,一个用户请求N个系统,给用户的感觉是一个系统的感觉,而不要重复登录.

    2 实现

    根据不同的业务场景来采取不同的实现方式

    2.1 方案一

    域名

    a.sojson.com 、b.sojson.com、c.sojson.com、n.sojson.com

    描述

    N个系统,但一级域名一致;
    这个案例实现相对简单

    该方案比较简单,只要提供公共的SDK 即可,不需要第三个系统的出现,这个[ SDK ]的工作需要管理[Cookie ]和用户信息。

    原理

    其实质这里就是利用了[ 二级域名 ]写[ 一级域名 ]的[ Cookie ].

    优点

    轻量级、可插拔、效率非常高

    缺点

    局限性限于一级域名是一样的

    2.2 方案二

    域名

    www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com

    描述

    域名较乱,有同一级域名,也有不同域名


    原理

    通过SSO 系统(登录、退出),[ Iframe ]引用的方式引入Cookie.domain.com;
    利用[Javascript ]操作(写入 / 删除 / 修改) [ cookie ];
    而这个cookie.domain.com 域名放入[ CDN ]上 ,获取用户信息当前系统直接通过[ Redis ](只读)获取

    优点

    采用压力分化,Cookie.domain.com 部署在CDN上;
    这样的话,对各个系统造成的压力是 0 ;
    用第三方系统(SSO)维护,权限更大,操作性更强;
    Cookie 信息在当前域名的一级域下,获取简单,大量减少对[ sso ]的访问量

    缺点

    如果浏览器安全性过高,Iframe 的方式操作[ Cookie ]将会失败。比如IE浏览器,目前正在攻克IE浏览器。

    2.3 方案三

    域名

    www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com

    描述

    域名比较乱,有同一级域名www.sojson.com、a.sojson.com),也有不同域名
    (条件和方案二一样),实现思路如下图:

    原理

    所有的请求(登录、退出、获取用户信息、当前用户状态)都请求sso 系统,sso 系统维护用户信息, Session UserInfo

    优点

    实现较为简单

    缺点

    SSO 压力非常大

    2.4 方案四

    域名

    www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com

    描述

    域名比较乱,有同一个一级域名的(www.sojson.com、a.sojson.com),也有不同域名的。
    (条件和方案二一样),实现采用[ CAS ]

    原理

    和方案三类似。

    优点

    现成的,资料较多。

    缺点

    繁重、灵活性差。

    相关文章

      网友评论

        本文标题:单点登录简单原理及实现

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