0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SSO单点登录和OAuth2.0的区别和理解

Android编程精选 来源:CSDN 作者:CSDN 2022-11-07 11:41 次阅读

一、概述

SSO是Single Sign On的缩写,OAuth是Open Authority的缩写,这两者都是使用令牌的方式来代替用户密码访问应用。流程上来说他们非常相似,但概念上又十分不同。SSO大家应该比较熟悉,它将登录认证和业务系统分离,使用独立的登录中心,实现了在登录中心登录后,所有相关的业务系统都能免登录访问资源。

OAuth2.0原理可能比较陌生,但平时用的却很多,比如访问某网站想留言又不想注册时使用了微信授权。以上两者,你在业务系统中都没有账号和密码,账号密码是存放在登录中心或微信服务器中的,这就是所谓的使用令牌代替账号密码访问应用。

二、SSO

两者有很多相似之处,下面我们来解释一下这个过程。先来讲解SSO,通过SSO对比OAuth2.0,才比较好理解OAuth2.0的原理。SSO的实现有很多框架,比如CAS框架,以下是CAS框架的官方流程图。特别注意:SSO是一种思想,而CAS只是实现这种思想的一种框架而已

f7809178-5dc7-11ed-a3b6-dac502259ad0.png

上面的流程大概为:

用户输入网址进入业务系统Protected App,系统发现用户未登录,将用户重定向到单点登录系统CAS Server,并带上自身地址service参数

用户浏览器重定向到单点登录系统,系统检查该用户是否登录,这是SSO(这里是CAS)系统的第一个接口,该接口如果用户未登录,则将用户重定向到登录界面,如果已登录,则设置全局session,并重定向到业务系统

用户填写密码后提交登录,注意此时的登录界面是SSO系统提供的,只有SSO系统保存了用户的密码,

SSO系统验证密码是否正确,若正确则重定向到业务系统,并带上SSO系统的签发的ticket

浏览器重定向到业务系统的登录接口,这个登录接口是不需要密码的,而是带上SSO的ticket,业务系统拿着ticket请求SSO系统,获取用户信息。并设置局部session,表示登录成功返回给浏览器sessionId(tomcat中叫JSESSIONID)

之后所有的交互用sessionId与业务系统交互即可

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

三、OAuth2.0

OAuth2.0有多种模式,这里讲的是OAuth2.0授权码模式,OAuth2.0的流程跟SSO差不多,在OAuth2中,有授权服务器、资源服务器、客户端这样几个角色,当我们用它来实现SSO的时候是不需要资源服务器这个角色的,有授权服务器和客户端就够了。

授权服务器当然是用来做认证的,客户端就是各个应用系统,我们只需要登录成功后拿到用户信息以及用户所拥有的权限即可

用户在某网站上点击使用微信授权,这里的某网站就类似业务系统,微信授权服务器就类似单点登录系统

之后微信授权服务器返回一个确认授权页面,类似登录界面,这个页面当然是微信的而不是业务系统的

用户确认授权,类似填写了账号和密码,提交后微信鉴权并返回一个ticket,并重定向业务系统。

业务系统带上ticket访问微信服务器,微信服务器返回正式的token,业务系统就可以使用token获取用户信息了

简介一下OAuth2.0的四种模式:

授权码(authorization-code)

授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。

隐藏式(implicit)

有些 Web 应用是纯前端应用,没有后端。这时就不能用上面的方式了,必须将令牌储存在前端。RFC 6749 就规定了第二种方式,允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)“隐藏式”(implicit)

密码式(password)

如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password)。

客户端凭证(client credentials)

最后一种方式是凭证式(client credentials),适用于没有前端的命令行应用,即在命令行下请求令牌。

简单流程

f961ef00-5dc7-11ed-a3b6-dac502259ad0.png

四、说一下几个名词的区别

首先,SSO是一种思想,或者说是一种解决方案,是抽象的,我们要做的就是按照它的这种思想去实现它

其次,OAuth2是用来允许用户授权第三方应用访问他在另一个服务器上的资源的一种协议,它不是用来做单点登录的,但我们可以利用它来实现单点登录。在本例实现SSO的过程中,受保护的资源就是用户的信息(包括,用户的基本信息,以及用户所具有的权限),而我们想要访问这这一资源就需要用户登录并授权,OAuth2服务端负责令牌的发放等操作,这令牌的生成我们采用JWT,也就是说JWT是用来承载用户的Access_Token的

最后,Spring Security、Shiro是用于安全访问的,用来做访问权限控制,都是一个用Java写的框架

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8125

    浏览量

    82543
  • SSO
    SSO
    +关注

    关注

    0

    文章

    9

    浏览量

    7462

原文标题:SSO 单点登录和 OAuth2.0 的区别和理解

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    格力博与芯盾时代携手建设SSO单点登录系统,打破业务应用之间的壁垒

    随着我国制造业数字化转型持续深入,身份安全的重要性日益凸显。
    的头像 发表于 04-12 09:43 135次阅读

    单点液位传感器与多点液位传感器有哪些不同呢?

    单点液位传感器和多点液位传感器的区别在于第一种是可以一个传感器检测一个液位,另外一个则可实现一个传感器检测多个液位,以此来适用于不同的应用环境。
    的头像 发表于 01-10 16:57 537次阅读
    <b class='flag-5'>单点</b>液位传感器与多点液位传感器有哪些不同呢?

    sata3.0和2.0的接口区别

    (也称为SATA III)。本文将比较这两个接口的区别。 传输速度: SATA 2.0接口的理论最高传输速率为3Gb/s(Gigabits per second),也就是每秒传输300MB的数据
    的头像 发表于 12-25 15:16 5172次阅读

    pd2.0和pd3.0的区别

    pd2.0和pd3.0的区别 PD(Power Delivery)是一种新一代的充电技术标准,可以提供更高的功率和更快的充电速度。PD2.0和PD3.0是PD标准的两个不同版本,在功能和性能方面
    的头像 发表于 12-07 15:37 1w次阅读

    0欧电阻、电感、磁珠单点接地时有什么区别

    0欧电阻、电感、磁珠单点接地时有什么区别? 0欧电阻、电感和磁珠单点接地是电子电路中常见的连接元件。它们在单点接地时具有不同的特性和应用。本文将详细介绍这三种元件的
    的头像 发表于 11-30 15:07 465次阅读

    统一身份认证平台之SSO建设

    前言 上篇说道Passwordless无密码技术,也提到了数字时代密码管理的难度,其实在日常的生活中,很多用户也会因为忘记某些网站的登录密码而烦恼。为了方便记忆,很多人都在不同的站点使用相同的用户名
    的头像 发表于 11-20 11:41 291次阅读
    统一身份认证平台之<b class='flag-5'>SSO</b>建设

    如何通过单点接地或者多点接地来消除噪声?它们有什么区别

    如何通过单点接地或者多点接地来消除噪声?它们有什么区别单点接地和多点接地是两种常见的方法,用于消除电子设备和电线系统中的噪声问题。它们在原理和实施上存在一些区别
    的头像 发表于 11-09 10:02 740次阅读

    什么是USB3.0?usb3.0与usb2.0有什么区别

    什么是USB3.0?usb3.0与usb2.0有什么区别 USB3.0是指“超级速度USB”,它是一种高速数据传输技术,是USB2.0的升级版本。与USB2.0相比,USB3.0具有更
    的头像 发表于 10-27 14:31 4538次阅读

    什么是oauth协议

    本篇文章让我带你认识一下什么是oauth协议 什么是 oauth协议 ? 百度百科上解释:允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站
    的头像 发表于 10-08 11:39 666次阅读
    什么是<b class='flag-5'>oauth</b>协议

    一个轻量级的权限认证框架:Sa-Token

    单点登录OAuth2.0 、 分布式Session会话 、 微服务网关鉴权 等一系列权限相关问题。 sa-token Sa-Token 功能 Sa
    的头像 发表于 09-30 16:46 636次阅读
    一个轻量级的权限认证框架:Sa-Token

    简述单点触摸,点触摸,多点触摸的关系与区别

    单点触摸,单点触摸设备已经有很多的年头了,最早起源于20世纪70年代,小尺寸的有触摸式手机,大尺寸最常见的就是银行里的ATM机和排队查询机。而苹果公司在iPhone
    的头像 发表于 08-21 08:09 869次阅读
    简述<b class='flag-5'>单点</b>触摸,点触摸,多点触摸的关系与<b class='flag-5'>区别</b>

    深入了解0ohm电阻,电感,磁珠单点接地时的区别

    探讨0Ohm电阻、磁珠。电感接地的区别 在我们的日常工作中,我们都知道,只要是地,都要汇聚在一起,接入到大地。若不接在一起便是"浮地",就会存在压差,容易积累电荷,造成静电等影响。地是参考零电位
    的头像 发表于 07-26 10:04 1001次阅读

    アライアンスパートナープログラム 新规パートナー登录のご案内

    アライアンスパートナープログラム 新规パートナー登录のご案内
    发表于 07-06 21:03 0次下载
    アライアンスパートナープログラム 新规パートナー<b class='flag-5'>登录</b>のご案内

    Spring Boot 3.1 中如何整合Spring Security和Keycloak

    虽然Keycloak 团队宣布了不再对Spring Security提供适配,但Spring Security长期以来一直为OAuth和OIDC提供强大的内置支持。所以,只要我们理解Spring Security是如何处理OAuth
    的头像 发表于 06-08 14:54 725次阅读
    Spring Boot 3.1 中如何整合Spring Security和Keycloak

    如何使用ESP8266作为简单页面的网络服务器来生成OAuth代码以批准设备并生成刷新令牌和访问令牌?

    寻找一些帮助来实现这个项目的一个版本。我使用 ESP8266 作为简单页面的网络服务器来生成 OAuth 代码以批准设备并生成刷新令牌和访问令牌。 一切正常,直到我到达与谷歌服务器的实际连接点。我
    发表于 05-19 12:41