免费注册,打造高效身份管理
博客/身份安全/SSO 和 OAuth2.0 的关系是什么?
SSO 和 OAuth2.0 的关系是什么?
Authing 官方2022.11.25阅读 874

一、OAuth2.0 实现了「授权」,SSO 还得实现「认证」

一言以蔽之,OAuth2.0 可以是通往 SSO 这个罗马的其中一条路,但它们本身并列于不同的场景与需求。


在详解 SSO 和 OAuth2.0 之前,需要先弄懂 “认证” 与 “授权” 。

认证(Authentication):知道 ta 是谁
授权(Authorization):知道 ta 有没有权限对资源执行试图执行的操作


认证操作需要由身份信息的持有者来完成,我们称其为 IdP(Identity Provider,身份提供商)。而在使用 OAuth2.0 协议的流程中,是不出现 IdP 这一角色的。

我们可以借用《西游记》来理解一下:如果天界支持的是 OAuth2.0 协议,六耳猕猴真拿到了通关文牒(相当于token,令牌),那它就可以凭着这个去西天取经了。因为如来佛祖不管来的人猴姓甚名谁,只要令牌符合条件,就可以把经文取走。

换句话说,SSO 可以借助 OAuth2.0 完成了「授权」,但「认证」这一步还需要靠引入 IdP 来实现。

二、OAuth2.0

OAuth2.0 是一种关于授权的开放网络标准允许用户在一个站点向其他站点授予对其资源的有限访问权限,而无需获得其凭证

设想一下,小蓝想把存储在 Google 的游戏录屏分享到 TapTap 这个手游分享社区,但又不愿意它拥有获取 Google 里所有资料的权力。问题是,只有得到了小蓝的授权,TapTap 才能读取 Google 相册里的视频。除了把 Google 的账密告诉其他应用,还有什么办法吗?


OAuth2.0 的诞生就解决了这个问题。简单来说,它在 Google 这个SP(Service Provider,服务提供商)和 TapTap 客户端之间设置了一道“授权结界”不让它们直接接触


被授权的主体不是用户,而是想要访问用户资源的业务系统,也就是TapTap 这种客户端。

三、单点登录 SSO

而 SSO 在引入身份提供商后,用户也成为了等待被认证、被授权的主体。
SSO(Single Sign On,单点登录)是指一种思想或服务,用户只需使用一次登录凭据就可以访问其他所有被授予权限的应用。

也就是说,小蓝用一组账号密码登录公司的考勤系统,切换至被授权的财务系统时也处于登录态,不会跳出让他重复登录的会话框。

还是用“真假美猴王”的例子来理解 SSO 和 OAuth2.0 的区别: 如果天庭购买了能够提供单点登录服务的软件,并委派一个 “身份官”(IdP)查岗,六耳猕猴就不仅要持有通关文牒这个 token,还得报上名来,证明自己是唐僧师徒四人的其中一个,才能取走经文。

可以看出,IdP 认证用户身份并授权其访问存储在客户端的资源,是 SSO 比 OAuth2.0 走得更远之处。


认证的方式包括三种:

  • 通过 session 进行认证
  • 通过 cookie 进行认证
  • 通过 token 进行认证

市面上具备 SSO 功能的软件里, Authing无需手动编写操作 session、cookie 或是 token的,控制台可以一键体验单点登录功能。

点击链接,立刻了解 Authing

 

文章作者

avatar

Authing 官方

0

文章总数

authing blog rqcode
关注 Authing 公众号
随时随地发现更多内容
authing blog rqcode
添加 Authing 小助手
加入 Authing 开发者大家庭