谈谈SSO

作者: 张晓乙 | 来源:发表于2019-01-16 22:39 被阅读0次

    好久没写过干货了,从今天开始到年底正好闲一段时间,保持每天一篇,把所学知识做个总结,首先我们谈谈SSO,先从概念说起,单点登录系统的是在一个体系结构的系统群,一个系统登录后所有系统都可以保持登录状态,无需再次登录。同理,一个系统退出,所有系统就都跟着退出,并且支持系统间相互踢出、更换密码主动退出重登等基本功能。

    我们先来看看这个单点系统的时序图:

    从图我们看到A1、A2系统都没有维护单独的登录界面,也就是说登录这两个系统的时候从重定向到了SSO认证系统中了,由SSO认证系统提供统一一套授权体系。此外还要注意的一点是A1、A2系统是具有自己的一套维持登录会话体系的,其实按道理来讲如果能保证每次请求有状态的资源的时候访问带着令牌去访问是否有权限也可以的,原因是避免与passport系统间的不必要的耦合,这样做的劣势就是每个系统去维护一套维持会话机制。

    大概流程流程做下细节描述:

    1.首先张三在谷歌浏览器去访问了a1.xx.com系统,此时a1系统将在谷歌浏览器中写入一个cookie,该cookie信息就是一个sessionId,之后a1系统将重定向到sso.xx.com系统。

    2.然后sso系统进行登录授权以及维持自己的会话体系,大概逻辑就是将生成的令牌与登录用户关系维持到分布式缓存中,然后带着令牌跳转到a1系统

    3.A1系统拿着令牌通过一系列加密手段请求passport系统,没有问题就把用户基本信息就给A1系统了。

    4.A1系统做了跳转到需要权限的界面。

    5.张三之后又通过一个谷歌浏览器访问了a2.xx.com系统,a2系统就会走一遍a1的流程,区别在于跳转到sso.xx.com时候,sso系统发现已经登录过了,a2系统就重新跳到了a2系统这个过程。

    A1系统、A2系统也可以设计成无状态的服务,便于系统横向扩展,读取session采用共享session服务器(也可用由passport系统充当),应用服务器的状态分离,分为无状态的应用服务器和有状态的Session服务器,然后针对这两种服务器的不同特性分别设计其架构。

    图2

    相关文章

      网友评论

          本文标题:谈谈SSO

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