阿里终面:说说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,在选择的时候开发者根据这些区别和复杂程度去决策。

相关文章
|
2月前
|
XML 存储 安全
【揭秘SAML协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略Saml协议的奥秘,告别SSO的迷茫与困惑
SAML(Security Assertion Markup Language)是由OASIS制定的基于XML的开放标准。它用于在身份提供者(IdP)和服务提供者(SP)之间交换身份验证和授权数据,从而支持跨域单点登录,提高身份认证和授权管理的安全性和效率。
113 2
【揭秘SAML协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略Saml协议的奥秘,告别SSO的迷茫与困惑
|
存储 安全 Java
OAuth2实现单点登录SSO完整教程,其实不难!(上)
OAuth2实现单点登录SSO完整教程,其实不难!
2766 1
OAuth2实现单点登录SSO完整教程,其实不难!(上)
|
1月前
|
存储 NoSQL 安全
阿里淘系单点登录中心实战
阿里淘系单点登录中心实战
41 0
|
1月前
|
JSON 安全 算法
【揭秘OIDC协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略OIDC协议的奥秘,告别SSO的迷茫与困惑
【揭秘OIDC协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略OIDC协议的奥秘,告别SSO的迷茫与困惑
17 0
|
1月前
|
JSON 前端开发 Java
|
2月前
|
存储 安全 Java
【揭秘OAuth协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略OAuth协议的奥秘,告别SSO的迷茫与困惑
在现代的网站中,我们经常会遇到需要用户登录的情况。然而,直接要求用户注册可能会显得繁琐,导致用户的流失。为了解决这个问题,网站可以采用OAuth授权机制。通过与像GitHub或其他第三方网站的认证授权合作,网站可以获取用户的相关信息,避免了繁琐的注册过程。
48 0
【揭秘OAuth协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略OAuth协议的奥秘,告别SSO的迷茫与困惑
|
安全 前端开发 Java
OAuth2实现单点登录SSO完整教程,其实不难!(下)
OAuth2实现单点登录SSO完整教程,其实不难!
802 1
OAuth2实现单点登录SSO完整教程,其实不难!(下)
OAuth2实现单点登录SSO完整教程,其实不难!(中)
OAuth2实现单点登录SSO完整教程,其实不难!
418 1
OAuth2实现单点登录SSO完整教程,其实不难!(中)
|
人工智能 安全 大数据
#阿里云认证&认证故事
我与阿里云的认证故事。
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程
150 0
五分钟带你玩转oauth2(十七)企业级解决方案,oauth2单点登录全流程

热门文章

最新文章