什么是单点登录,如何实现单点登录

什么是单点登录

单点登录(Single Sign On),简称SSO,定义是在多个应用系统中,用户只需登录一次就可以访问所有相互信任的应用系统。
SSO一般都需要一个独立的统一认证中心,子系统登录的时候均需要跳转到统一认证中心,当一个系统登录成功后,再访问其他子系统时会自动登录。
比如淘宝和天猫,用户登录淘宝后,再打开天猫会自动登录了天猫,这种就属于单点登录。

流程

  • 用户访问系统的受保护资源,系统A发现用户未登录,跳转至统一认证中心,并将自己的地址作为参数
  • 统一认证中心发现用户未登录,将用户引导至登录页面
  • 用户输入登录信息提交登录申请
  • 统一认证中心校验用户登录信息,创建用户与统一认证中心之间的会话,称为全局会话,同时创建授权令牌
  • 统一认证中心带着令牌跳转回最初的请求地址(系统A)
  • 系统拿到令牌,去统一认证中心校验令牌是否有效
  • 统一认证中心校验令牌,返回有效,注册系统A
  • 系统A使用该令牌创建与用户的会话,称为局部会话,返回受保护资源
  • 用户访问系统B的受保护资源
  • 系统B发现用户未登录,跳转至统一认证中心,并将自己的地址作为参数
  • 统一认证中心发现用户已登录,跳转回系统B的地址,并附上令牌
  • 系统B拿到令牌,去统一认证中心校验令牌是否有效
  • 统一认证中心校验令牌,返回有效,注册系统B
  • 系统B使用该令牌创建与用户的局部会话,返回受保护资源

用户登录成功之后,会与sso认证中心及各个子系统建立会话,用户与统一认证中心建立的会话称为全局会话
用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过统一认证中心

全局会话与局部会话有如下约束关系

  • 局部会话存在,全局会话一定存在
  • 全局会话存在,局部会话不一定存在
  • 全局会话销毁,局部会话必须销毁

如何实现

  1. 部署一个统一认证中心,用于专门处理登录请求的独立的 Web 服务
  2. 用户统一在统一认证中心进行登录,登录成功后,统一认证中心记录用户的登录状态,并将 token 写入 Cookie(这里的Cookie 是统一认证中心的,应用系统是访问不到的)
  3. 应用系统检查当前请求有没有 Token,如果没有,说明用户在当前系统中尚未登录,就将页面跳转至统一认证中心进行登录
  4. 如果统一认证中心发现用户尚未登录,则返回登录页面,等待用户登录
  5. 如果发现用户已经登录过了,直接跳转回目标 URL ,并在跳转前生成一个 Token,拼接在目标 URL 的后面,回传给目标应用系统
  6. 应用系统拿到 Token 之后,需要向统一认证中心确认下 Token 的合法性,防止用户伪造。确认无误后,应用系统记录用户的登录状态,并将 Token 写入 Cookie(这个 Cookie 是当前应用系统的),然后给本次访问放行。
  7. 用户再次访问当前应用系统时,就会自动带上这个 Token,应用系统验证 Token 发现用户已登录,这里就不涉及统一认证中心了
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值