SSO与OAuth的核心区别是什么?技术概念澄清问询
SSO与OAuth的核心差异拆解
先直接给结论:你提到的两种场景本质不同——前者是纯粹的SSO场景,后者是用OAuth协议实现的SSO体验,二者是「场景/体验」和「底层技术协议」的关系,核心差异可以从这几个维度区分:
1. 本质定位完全不同
- SSO(单点登录)是一种用户登录体验模式:核心是让用户通过一次身份验证,就能访问多个关联系统,不用重复输入凭证。它是一种解决多系统登录效率的方案,不是具体的技术协议。
- OAuth是一种授权技术协议:核心是解决「第三方应用如何在不获取用户密码的前提下,安全访问用户在授权服务器上的特定资源」的问题。它是一套具体的技术规范,而非体验模式。
2. 核心目标天差地别
- SSO的目标是简化登录流程:减少用户重复登录的操作,同时统一企业/组织内部的身份管理。比如企业内部的OA、CRM、项目管理系统共用一套账号登录,就是典型的SSO目标。
- OAuth的目标是精细化权限管控:比如你允许某款笔记APP读取你的Google云端硬盘文件,但不允许它修改或删除,这就是OAuth的核心价值——它关注的是「谁能访问什么资源」,而非「用户是谁」。
3. 应用场景的重叠与边界
- 你说的「用一套凭证登4个内部平台」是纯SSO场景:通常依赖企业内部的集中身份认证服务器,技术上可能用SAML、Kerberos或者甚至自定义的会话同步方案实现。
- 「用Google账号登4个第三方平台」是OAuth支撑的SSO体验:这里Google作为授权服务器,用基于OAuth扩展的OpenID Connect协议完成了身份验证,进而实现了跨平台的登录效果。但OAuth本身不止能做登录,比如你用微信授权某APP获取你的昵称头像,或者授权某工具同步你的微信公众号文章,这些都是OAuth的原生授权场景,和SSO无关。
4. 技术实现的包含关系
SSO可以通过多种技术协议实现,OAuth只是其中一种:
- 除了OAuth(+OpenID Connect),SAML、Kerberos、甚至基于Cookie的会话共享都能实现SSO。
- 反过来,OAuth本身不直接等于SSO,只有当它被用来实现跨系统的身份验证时,才会产生SSO的体验。
内容的提问来源于stack exchange,提问作者Oscar Calderon
相关产品推荐
相关产品推荐

