SSO(单点登录)是身份认证机制,解决 “一次登录、多系统通行”;OSS(对象存储)是云存储服务,解决海量非结构化数据的存储与访问,二者属于完全不同的技术领域,常配合使用但无直接竞争关系。


一、SSO(Single Sign-On,单点登录)

核心定义:一种身份认证机制,用户在一次登录后,可无感知访问所有相互信任的应用系统,无需重复输入账号密码。

核心原理

  • 统一认证中心(IdP):负责验证用户身份、签发认证凭证(Token/Ticket)。
  • 服务提供商(SP):接入 SSO 的业务系统,依赖 IdP 完成认证。
  • 流程:用户访问 SP → 跳转 IdP 登录 → IdP 签发凭证 → SP 验证凭证 → 授权访问。

主流实现协议

  • SAML:企业级跨域 SSO 标准,适合复杂系统集成。
  • OAuth 2.0 / OIDC:开放授权与身份认证,适合第三方登录(如微信登录)。
  • CAS:轻量级开源方案,常用于高校、企业内网。

典型场景

  • 企业内部:OA、CRM、邮箱、知识库统一登录。
  • 互联网平台:淘宝 / 天猫、多端应用共享登录态。

二、OSS(Object Storage Service,对象存储服务)

核心定义:一种云存储服务,以 ** 对象(Object)** 为单位管理非结构化数据(图片、视频、文档、备份等),提供海量、高可靠、低成本的存储能力。

核心概念

  • 对象(Object):包含数据本体元数据唯一 Key
  • 桶(Bucket):对象的逻辑容器,相当于顶层文件夹。
  • 扁平化结构:无传统文件系统的层级目录,通过 Key 直接寻址。

核心特性

  • 海量弹性:容量近乎无限,按需扩展。
  • 高可靠:数据持久性可达99.9999999999%(12 个 9)
  • 多存储类型:标准 / 低频 / 归档 / 冷归档,适配不同访问频率。
  • RESTful API:跨平台、跨语言访问。
  • 安全管控:ACL、Policy、加密、防盗链、日志审计。

典型场景

  • 网站 / APP:图片、音视频、静态资源托管。
  • 大数据:日志、备份、归档、AI 训练数据。
  • 多媒体:直播、点播、短视频存储与分发。

三、核心区别对比

维度 SSO(单点登录) OSS(对象存储)
领域 身份认证与访问控制 数据存储与管理
解决问题 多系统统一登录、权限管理 海量非结构化数据存储、访问
核心对象 用户身份、认证凭证 数据对象、文件
核心协议 SAML、OAuth 2.0、OIDC、CAS RESTful API、HTTP/HTTPS
典型角色 IdP(认证中心)、SP(业务系统) Bucket(桶)、Object(对象)
价值 提升体验、集中安全、简化管理 低成本、高可靠、弹性扩展、易访问

四、关系与配合

  • 无直接竞争:SSO 管 “谁能进”,OSS 管 “存什么、怎么存”。
  • 常见配合
    1. SSO统一管控 OSS 的访问权限(如企业员工通过 SSO 登录后访问公司 OSS 资源)。
    2. OSS 存储 SSO 系统的日志、配置、用户头像等非结构化数据。

五、细说SSO

1、SSO 是什么

用户在一个统一的登录入口登录后,访问同体系下其他系统时,自动登录、无需再次输入账号密码

常见场景:

  • 登录阿里系:淘宝、天猫、支付宝、阿里云互通
  • 登录腾讯系:QQ、微信、腾讯云、腾讯会议互通
  • 企业内部:OA、ERP、CRM、邮箱、Git、监控平台互通

2、SSO 核心原理(极简版)

  1. 用户访问系统 A,未登录 → 跳转到 SSO 认证中心 登录
  2. 登录成功 → 认证中心下发 凭证(Ticket/Token)
  3. 系统 A 验证凭证有效 → 允许访问
  4. 用户再访问系统 B → 系统 B 去认证中心校验凭证 → 自动登录

一句话:统一认证中心发 “通行证”,各系统认这张证


3、常见 SSO 协议 / 技术

  • SAML 2.0:企业级、传统、偏 XML,适合企业内部系统、AD 集成
  • OAuth 2.0 + OIDC:现代、轻量、基于 Token,适合前后端、移动端、第三方登录
  • CAS:开源单点登录框架,Java 生态常用
  • JWT:Token 格式,常和 OAuth/OIDC 一起用

4、SSO 好处

  • 对用户:少输密码、体验好
  • 对企业:统一账号、统一权限、安全审计、方便离职回收
  • 对开发:减少各系统重复写登录逻辑

5、和普通登录的区别

  • 普通登录:每个系统一套账号密码,各自维护
  • SSO:一套账号,一个认证中心,多系统共享登录状态

六、SSO企业大部分用的是什么?

企业里用得最多的 SSO 方案,按普及度与场景可分为三大类:SAML 2.0(传统企业首选)、OAuth 2.0+OIDC(现代 / 云原生主流)、CAS(Java / 内网经典),再配上对应的商业 / 开源产品。


1、企业最主流的三类 SSO 协议(按使用场景)

1.1 SAML 2.0(企业级、传统 / 大型企业首选)

  • 地位500 强、金融、政务、传统 IT 的绝对主流,最成熟、最合规。
  • 核心特点:基于 XML、强安全、跨域、支持 AD / 域集成、适合 B2B 与内网系统。
  • 典型场景
    • 内网 OA、ERP、CRM、邮箱、HR 系统统一登录
    • 与 Salesforce、SAP、Workday 等 SaaS 应用集成
    • 政府 / 高校 / 国企内网统一身份认证
  • 代表产品
    • 商业:Microsoft Entra ID(原 Azure AD)、Okta、Ping Identity
    • 开源:Keycloak、Shibboleth

1.2 OAuth 2.0 + OIDC(现代 / 云原生 / 微服务主流)

  • 地位互联网公司、云原生、前后端分离、移动端的首选,轻量、灵活。
  • 核心特点:基于 Token(JWT)、无状态、易集成、适合 API 与微服务。
  • 典型场景
    • 企业内部微服务、前后端分离系统
    • ToB SaaS 平台(让客户用企业微信 / 钉钉 / AD 登录)
    • 移动端 App、小程序统一认证
  • 代表产品
    • 商业:Auth0、Okta、阿里云 IDaaS、腾讯云 CIAM
    • 开源:Keycloak、Spring Security OAuth2、Authelia

1.3 CAS(Java 生态 / 内网经典)

  • 地位Java Web、高校、传统内网系统的经典方案,兼容性极强。
  • 核心特点:中心化认证、票据(Ticket)机制、适配老系统、多语言客户端。
  • 典型场景
    • 高校统一身份认证(教务、图书馆、一卡通)
    • 传统 Java Web 应用集群(Tomcat、Spring)
    • 内网多系统快速打通
  • 代表产品
    • 开源:Apereo CAS(最主流)
    • 商业:CAS 商业版、MaxKey(国产)

2、企业常用 SSO 产品(按规模与技术栈)

2.1 大型企业 / 跨国公司(首选)

  • Microsoft Entra ID(Azure AD):微软生态标配,深度集成 Windows 域、Office 365,支持 SAML/OIDC,全球企业第一选择。
  • Okta:云原生 IAM 领导者,7000 + 预集成应用,SAML/OIDC 全覆盖,适合复杂权限与 MFA。
  • Ping Identity:金融 / 医疗合规首选,强安全、混合云支持。

2.2 国内企业 / 信创(首选)

  • Keycloak:RedHat 开源,SAML/OIDC/CAS 全支持,国产适配友好,中小 / 中大型企业首选。
  • MaxKey:国产开源,国密支持、中文友好,适配信创环境。
  • 阿里云 IDaaS、腾讯云 CIAM:云厂商托管,开箱即用,适合上云企业。

2.3 开源轻量方案(中小团队 / 快速落地)

  • CAS:Java 生态快速 SSO
  • Authelia:Docker 友好、轻量、支持 MFA
  • xxl-sso:极简、快速原型验证

3、一句话选型建议(企业最常用组合)

  • 传统企业 / 内网 / JavaCAS 或 SAML + Keycloak
  • 云原生 / 微服务 / 前后端分离OAuth 2.0 + OIDC + Keycloak/Okta
  • 微软生态 / Office 365Microsoft Entra ID(Azure AD)
  • ToB SaaS / 第三方登录OAuth 2.0 + OIDC

4、核心对比(一眼看懂)

协议 企业使用场景 安全性 复杂度 适配系统
SAML 2.0 传统 / 大型 / 金融 / 政务 极高 老系统、AD、SaaS 应用
OAuth 2.0+OIDC 云原生 / 微服务 / 移动端 前后端分离、API、App
CAS Java / 内网 / 高校 传统 Web、内网系统

七、点击登录SSO实现逻辑

SSO(OIDC 协议)具体实现逻辑,可以拆成「前端做什么、后端做什么、核心交互流程」三部分,用最落地的方式讲清楚。

核心前提:软件是SSO 接入方(只对接企业已有 SSO,不自己做账号中心),用 OIDC 协议(基于 OAuth2.0),这是最通用、最简单的方案。

1、先看整体交互流程(一张图看懂)

前端核心职责

  1. 触发 SSO 登录跳转(调用企业 SSO 授权页);
  2. 接收企业 SSO 返回的「授权码 code」;
  3. 把 code 传给后端,获取本地登录态;
  4. 存储登录态,完成页面跳转。

后端核心职责

  1. 接收前端传的「授权码 code」;
  2. 用 code 向企业 SSO 换取 ID Token(用户身份凭证);
  3. 验证 ID Token 的合法性(防伪造、防过期);
  4. 解析用户信息,创建 / 匹配本地用户;
  5. 生成本地登录态(JWT/Session),返回给前端。

总结

  1. 前端:只负责「跳转授权页→接收 code→传给后端」,逻辑简单,依赖成熟库;
  2. 后端:核心是「用 code 换 Token→验证 Token→创建 / 登录本地用户」,90% 逻辑靠库实现,只需配置参数;
  3. 整体难度:半天就能跑通核心流程,关键是拿到企业的 OIDC 配置参数,替换到代码里即可。

八、扫二维码的SSO实现逻辑

本质上,扫码登录是 SSO/OIDC 的 “变种交互方式” —— 核心认证逻辑还是 OIDC,但把 “输入账号密码” 换成了 “扫码授权”,前端多了 “轮询查扫码状态” 的步骤,后端多了 “生成二维码 + 关联授权码” 的环节。

1、扫码登录的核心逻辑(整体流程)

核心差异:

  • 账号密码登录:前端直接跳 SSO 授权页,用户输密码拿 code;
  • 扫码登录:前端先拿二维码,用户扫码授权后,后端把 code 给前端,后续换 Token / 登录的逻辑完全复用之前的代码

前端核心职责(扫码登录新增)

  1. 调用后端接口生成登录二维码;
  2. 展示二维码,并启动定时轮询(每 1-2 秒查一次状态);
  3. 轮询到 “已授权” 后,拿到 code,复用之前的验证逻辑
  4. 登录成功后停止轮询,跳转页面;
  5. 处理二维码过期(重新生成)、取消授权等异常。

后端核心职责(扫码登录新增)

  1. 生成唯一二维码 ID,调用企业 SSO 接口获取二维码图片和凭证;
  2. 用缓存(Redis 最佳)存储二维码状态(未扫码 / 已授权 / 过期 / 取消),有效期和二维码一致;
  3. 提供轮询接口,实时查询企业 SSO 的扫码状态,同步到本地缓存;
  4. 扫码授权成功后,把企业返回的 code 返回给前端;

关键注意事项(扫码登录避坑)

  1. 状态存储用缓存:二维码状态(ID、授权码、状态)一定要存在缓存(Redis)里,不要存数据库(性能差),且有效期和二维码一致;
  2. 轮询频率要合理:1-2 秒一次即可,太频繁会压垮后端,太疏会导致登录延迟;
  3. 异常处理要完善:处理二维码过期(重新生成)、用户取消授权(提示用户)、网络异常(重试);
  4. 敏感信息不暴露:企业 SSO 的client_secret仍只存在后端,前端只拿二维码 ID 和图片;
  5. 核心逻辑复用:扫码只是 “拿 code 的方式变了”,后续验证 Token、创建用户、生成本地登录态的逻辑,和账号密码登录完全一样,不用重复开发。

总结

  1. 扫码登录是 SSO 的交互变种:核心还是 OIDC,只是把 “输密码拿 code” 换成 “扫码拿 code”;
  2. 前端新增:生成二维码 + 轮询状态,拿到 code 后复用原有验证逻辑;
  3. 后端新增:维护二维码状态,调用企业 SSO 的扫码接口,拿到 code 后返回给前端;
  4. 复用性极高:90% 的代码(Token 验证、用户登录)和账号密码登录共用,开发成本低。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐