SSO单点登录 Single Sign-on

注:图片来自,UP主张朝阳讲编程
https://www.bilibili.com/video/BV1Mi7wzEEV4/?spm_id_from=333.337.search-card.all.click&vd_source=868bfa43469370e22ae273ea43cdc8e1
Single Sign-on 单点登录
在这里插入图片描述

sso流程

在这里插入图片描述在这里插入图片描述

  1. 用户发起资源请求

    用户向app1发送/resource请求,想要访问受保护的资源。

  2. App1 重定向到 SSO 认证中心

    app1检测到用户未登录,将用户重定向到 SSO 服务的登录页面,携带参数/login?ref=app1.com/resourceref用于记录用户原本要访问的 App1 资源地址。

  3. SSO 返回登录页面

    SSO 服务向用户返回login.html登录页面,同时保留ref=app1.com/resource参数,让登录后能跳回原资源页。

  4. 用户提交登录信息

    用户在登录页输入usernamepassword,向 SSO 发送/login/submit?ref=app1.com/resource请求提交认证信息。

  5. SSO 重定向回 App1 并携带令牌

    SSO 验证用户账号密码通过后,生成sso_token(SSO 的身份令牌),并将用户重定向回app1.com/resource? sso_token=xxx,把sso_token传递给 App1。

  6. App1 向 SSO 验证令牌有效性

    App1 拿到sso_token后,向 SSO 发送/authentication请求,携带该令牌,确认令牌是否合法、有效。

  7. SSO 返回验证结果

    SSO 验证sso_token通过,向 App1 返回ok的确认响应。

  8. App1 生成自身令牌并返回资源

    App1 收到验证通过的结果后,生成app1_token(自身系统的登录令牌),通过Set-Cookiesso_tokenapp1_token写入用户浏览器,最后向用户返回请求的resource资源,完成登录与资源访问。

其他登录场景

  • OAuth2.0:给第三方授权用我的信息
  • 联合登录:用微信 / QQ / 微博登录别的网站,是一种场景
  • SSO 单点登录:同一家公司的多个产品,登一次全通用

详细对比

1. OAuth2.0

本质:授权协议

  • 作用:让 A 网站能安全地 “借用” B 平台的身份,但不给密码
  • 核心:授权,不是登录本身
  • 例子:你允许某个 App 获取你的微信头像、昵称

2. 联合登录(第三方登录)

本质:一种登录方式

  • 就是我们常说的:
    • 微信登录
    • QQ 登录
    • GitHub 登录
  • 底层通常用 OAuth2.0 实现
  • 特点:跨平台、跨公司,你在小网站用大厂账号登录

典型流程

  1. 第三方网站 → 跳转到微信 / QQ 登录页
  2. 你在官方页登录、同意授权
  3. 官方给第三方发一个令牌(Token)
  4. 第三方拿令牌访问你的信息,全程看不到密码

3. SSO 单点登录(Single Sign On)

本质:同体系内一次登录,全站通行

  • 场景:同一个公司 / 集团内部系统
  • 例子:
    • 登录了支付宝 → 淘宝自动登录
    • 登录百度账号 → 贴吧、网盘、文库都不用再登
    • 企业后台:登一次 OA、CRM、ERP 全通
  • 特点:同一家、一套账号体系、只输一次密码

最清晰的区别表

OAuth2.0 联合登录 SSO 单点登录
是什么 授权协议 登录方式 登录机制
关系 联合登录的底层技术 基于 OAuth 实现 自己一套独立方案
场景 跨平台授权 用微信 / QQ 登别的网站 同公司多产品互通
关键词 授权、令牌、权限 第三方登录、快捷登录 一次登录、多处通行
典型例子 允许获取头像、公开信息 网站点 “微信登录” 登淘宝→支付宝自动登录
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐