阿里终面:说说OAuth2.0 与 单点登录的区别?

简介: 阿里终面:说说OAuth2.0 与 单点登录的区别?

SSO是Single Sign On的缩写,OAuth是Open Authority的缩写,这两者都是使用令牌的方式来代替用户密码访问应用。流程上来说他们非常相似,但概念上又十分不同。很多人会将其混为一谈,其实这两个还是有些区别的

对于OAuth2.0相关内容在Spring Cloud Alibaba 实战中结合实战项目源码从零搭建有着详细的介绍,如下图:

什么是单点登录

简单的说就是在多个应用的系统中,用户只需要登录一次就可以访问权限范围内的所有应用子系统,同样的注销也只需要注销一次。

比如百度这个网站,用户只要登录了百度的官网,那么对于百度百科、百度知道、百度贴吧等网站都是处于登录状态,这就是一个典型的单点登录的例子。

单点登录和Oauth2.0的区别

虽然Oauth2.0能够实现单点登录,但是在一些方面还是有些区别的,如下:

  1. 信任角度:Oauth2.0授权服务端和第三方客户端不属于一个互相信任的应用群,比如微信和第三方,这就不是一个公司的产品;然而单点登录的服务端和接入的客户端都在同一个相互信任的应用系统中,比如百度官网、百度百科,这都是一个公司的产品
  2. 资源角度:OAuth2.0授权主要是让用户自行决定——“我”在OAuth2.0服务提供方的个人资源是否允许第三方应用访问;而单点登录的资源都在客户端这边,单点登录的服务端主要用于登录,以及管理用户在各个子系统的权限信息。
  3. 流程角度:OAuth2.0授权的时候,第三方客户端需要拿预先“商量”好的密码去获取Access Token;而单点登录则不需要。

Oauth2.0完全可以实现单点登录,但是更加侧重于对于己方资源的保护,了解了这两种的区别才能正确的选择

单点登录的实现

Oauth2.0实现单点登录非常简单,比如微服务下的各个子系统接入Oauth2.0的认证服务,用户从认证服务获取token后,直接通过网关转发给下游子系统则可以实现只需要一次登录

其实除了Oauth2.0以外,还有很多框架能够实现单点登录,比较经典则是CAS框架

以下是CAS框架的官方流程图。特别注意:SSO是一种思想,而CAS只是实现这种思想的一种框架而已

上面的流程大概为:

  1. 用户输入网址进入业务系统Protected App,系统发现用户未登录,将用户重定向到单点登录系统CAS Server,并带上自身地址service参数
  2. 用户浏览器重定向到单点登录系统,系统检查该用户是否登录,这是SSO(这里是CAS)系统的第一个接口,该接口如果用户未登录,则将用户重定向到登录界面,如果已登录,则设置全局session,并重定向到业务系统
  3. 用户填写密码后提交登录,注意此时的登录界面是SSO系统提供的,只有SSO系统保存了用户的密码
  4. SSO系统验证密码是否正确,若正确则重定向到业务系统,并带上SSO系统的签发的ticket
  5. 浏览器重定向到业务系统的登录接口,这个登录接口是不需要密码的,而是带上SSO的ticket,业务系统拿着ticket请求SSO系统,获取用户信息。并设置局部session,表示登录成功返回给浏览器sessionId(tomcat中叫JSESSIONID)
  6. 之后所有的交互用sessionId与业务系统交互即可

整个流程还是相对比较复杂的,当然CAS这个框架的配置也是相对比较复杂,了解过的人都想放弃,关于CAS如何去搭建,在后面会单独介绍

最常见的例子是,我们打开淘宝APP,首页就会有天猫、聚划算等服务的链接,当你点击以后就直接跳过去了,并没有让你再登录一次

总结

Oauth2.0和单点登录的区别需要理解清楚,相对来说Oauth2.0实现单点登录更加简单,CAS虽然能够实现单点登录,但是服务部署和配置更加复杂,不易于上手,当然目前也有很多的系统在使用CAS,在选择的时候开发者根据这些区别和复杂程度去决策。

相关文章
|
存储 缓存 安全
一文讲透认证授权的那些事
权限管理一直都是初级程序员学习的一大重点,也是一大难点,有单点登录,有联合登录,有session有Token,有各种权限框架,还有什么是RBAC,以及分布式下如何做权限管理。
818 0
|
存储 安全 Java
OAuth2实现单点登录SSO完整教程,其实不难!(上)
OAuth2实现单点登录SSO完整教程,其实不难!
3419 1
OAuth2实现单点登录SSO完整教程,其实不难!(上)
|
2月前
|
安全 Java 数据安全/隐私保护
|
5月前
|
存储 安全 Java
技术好文:Tacacs+认证详细调研
技术好文:Tacacs+认证详细调研
176 0
|
6月前
|
XML 安全 API
理解并实现单点登录(SSO)的技术解析
【5月更文挑战第21天】本文解析了单点登录(SSO)技术,旨在解决多系统登录的效率和安全问题。SSO允许用户在集中认证系统登录后,无须反复输入凭证即可访问其他受信任应用。其原理基于信任机制,通过会话令牌实现身份验证。文中提到了两种实现方式:SAML-based SSO,利用SAML断言交换安全信息;OAuth 2.0-based SSO,通过授权码或访问令牌授权。实施SSO时需关注认证中心安全、令牌有效期、跨域通信及用户体验优化。
|
人工智能 运维 安全
阿里认证和腾讯认证有什么区别?哪个比较好?
云计算诞生后,就如雨后春笋般占据了我们的社会的各行各业,很多业内的龙头企业,都会使用云计算来作为自己的技术支持,尤其是很多中小型企业,会选择使用云产品,降低自己的运营成本。
|
安全 前端开发 Java
OAuth2实现单点登录SSO完整教程,其实不难!(下)
OAuth2实现单点登录SSO完整教程,其实不难!
921 1
OAuth2实现单点登录SSO完整教程,其实不难!(下)
OAuth2实现单点登录SSO完整教程,其实不难!(中)
OAuth2实现单点登录SSO完整教程,其实不难!
485 1
OAuth2实现单点登录SSO完整教程,其实不难!(中)
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程
195 0
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程
|
JSON 前端开发 安全
前后端分离基于Oauth2的SSO单点登录怎样做?
单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼;本文主要介绍跨域间的前后端分离项目怎样实现单点登录,并且与非前后端分离的差异在那里?需要解决什么问题?
4488 0