多条产品线共享sso单点登录设计(项目)


多条产品线共享sso单点登录设计

单独提取登录模块 利用cookie和二级域名可以共卓教据的持点来实现单点登录

涉及到cookie过大超过请求数据量–只保留必须的用户登录信息-token和userinfo至于项目个性信息保存在本地存储

什么是单点登录(SSO)

一、什么是单点登录?

单点登录的英文名叫做:Single Sign On(简称SSO)。

在初学/以前的时候,一般我们就单系统,所有的功能都在同一个系统上。
sso
所有的功能都在同一个系统上
后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。

回顾:分布式基础知识
sso

拆分成多个子系统
比如阿里系的淘宝和天猫,很明显地我们可以知道这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。

登录了天猫,淘宝也登录了
简单来说,单点登录就是在多个系统中,用户只需一次登录,各个系统即可感知该用户已经登录

一、早期的多系统登录解决方案

  • 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器与服务器之间维护会话状态。但cookie是有限制的,这个限制就是cookie的域(通常对应网站的域名),浏览器发送http请求时会自动携带与该域匹配的cookie,而不是所有cookie
  • 既然这样,为什么不将web应用群中所有子系统的域名统一在一个顶级域名下,例如“*.baidu.com”,然后将它们的cookie域设置为“baidu.com”,这种做法理论上是可以的,甚至早期很多多系统登录就采用这种同域名共享cookie的方式。
  • 共享cookie的方式存在众多局限。
    1. 应用群域名得统一
    2. 应用群各系统使用的技术(至少是web服务器)要相同,不然cookie的key值(tomcat为JSESSIONID)不同,无法维持会话,共享cookie的方式是无法实现跨语言技术平台登录的,比如java、php、.net系统之间
    3. cookie本身不安全。
      因此,我们需要一种全新的登录方式来实现多系统应用群的登录,这就是单点登录

二、什么是单点登录

单点登录英文全称Single Sign On,简称SSO。

指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分

三、为什么需要单点登录

  • web系统早已从久远的单系统发展成为如今由多系统组成的应用群,面对如此众多的系统,用户难道要一个一个登录、然后一个一个注销吗?
  • web系统由单系统发展成多系统组成的应用群,复杂性应该由系统内部承担,而不是用户。无论web系统内部多么复杂,对用户而言,都是一个统一的整体,也就是说,用户访问web系统的整个应用群与访问单个系统一样,登录/注销只要一次就够了

    四、单点登录原理

    单点登录原理来源参考:(www.cnblogs.com/ywlaker/p/6…)