你必须要懂的单点登录(SSO)原理和实现

Posted CodeSheep

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你必须要懂的单点登录(SSO)原理和实现相关的知识,希望对你有一定的参考价值。

来源丨weienjun

blog.csdn.net/weienjun/article/details/80059691


 HTTP协议的无状态性 

HTTP是无状态协议,浏览器的每一次请求,服务器都会独立处理,不与之前或之后的请求产生关联,所以,任何用户都可以通过浏览器访问服务器资源。


 session和cookie机制 

其实前文《》已经非常深入的讨论过cookie和session了。

session是服务器级别的,cookie是浏览器级别的。

session:浏览器第一次请求服务器,服务器创建一个会话,并将会话的id作为响应的一部分发送给浏览器,浏览器存储会话id,之后浏览器的每一次访问服务器都会带上会话id,服务器根据会话id就知道是不是同一个用户了。

你必须要懂的单点登录(SSO)原理和实现

cookie:session机制每一次浏览器访问服务器,服务器都要判断一次会话id,显然不太合适。于是浏览器来维护会话id就是cookie机制。浏览器每次访问服务器都会自动附带cookie信息。

你必须要懂的单点登录(SSO)原理和实现

cookie和session机制就可以确保一个用户登录到一个系统后,之后的操作在一定时间内就不需要再次登录系统。

以上的 session和 cookie都只适用于单系统,但是系统数量变多成为多系统时,我们总不能访问一个分支系统就登录一次吧,于是将这些子系统的域名统一到一个顶级域名中,然后将cookie域设置成顶级域名,于是各个子系统之间就可以共享cookie。


 何为单点登录? 

  • 是什么

单点登录全称 single sign on,简称 SSO,指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录和单点注销两部分。比如你用阿里系产品,你一旦打开浏览器登陆过淘宝网,接下来你会发现你再打开天猫,其竟然自动登录了!

  • 从哪来

由于共享 cookie有很多局限性。例如:域名难以统一,子系统技术难以统一。所以,需要一种全新的登录方式实现多系统应用群的登录 单点登录。


 单点登录实现原理 

  • 登录

sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。具体过程如图所示:

操作步骤如下:

  1. 用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数
  2. sso认证中心发现用户未登录,将用户引导至登录页面
  3. 用户输入用户名密码提交登录申请
  4. sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌
  5. sso认证中心带着令牌跳转会最初的请求地址(系统1)
  6. 系统1拿到令牌,去sso认证中心校验令牌是否有效
  7. sso认证中心校验令牌,返回有效,注册系统1
  8. 系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源
  9. 用户访问系统2的受保护资源
  10. 系统2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数
  11. sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌
  12. 系统2拿到令牌,去sso认证中心校验令牌是否有效
  13. sso认证中心校验令牌,返回有效,注册系统2
  14. 系统2使用该令牌创建与用户的局部会话,返回受保护资源


 基于Spring框架实现单点登录 

在强大的Spring全家桶面前,单点登录的代码实现变得非常容易,这在前文《 》已经实现过,Github源码都已经给出,可以直接参考。
后   记

更多热文在此:

  ●  

  ●  

  ●  的SSO单点登录+JWT权限控制实战

  ●  

  ●  

  ●  

  ●  

  ●  

  ●  


以上是关于你必须要懂的单点登录(SSO)原理和实现的主要内容,如果未能解决你的问题,请参考以下文章

终于搞明白了,CAS单点登录原理解析!!

sso单点登录都有哪些实现方式?

单点登录原理和java实现简单的单点登录

sso单点登录实现

EBS单点登录SSO

CAS 单点登录原理解析