SSO单点登录和OAuth2.0区别
一、概述
SSO是Single Sign On的缩写,OAuth是Open Authority的缩写,这两者都是使用令牌的方式来代替用户密码访问应用。流程上来说他们非常相似,但概念上又十分不同。SSO大家应该比较熟悉,它将登录认证和业务系统分离,使用独立的登录中心,实现了在登录中心登录后,所有相关的业务系统都能免登录访问资源。OAuth2.0原理可能比较陌生,但平时用的却很多,比如访问某网站想留言又不想注册时使用了微信授权。以上两者,你在业务系统中都没有账号和密码,账号密码是存放在登录中心或微信服务器中的,这就是所谓的使用令牌代替账号密码访问应用。
二、SSO
两者有很多相似之处,下面我们来解释一下这个过程。先来讲解SSO,通过SSO对比OAuth2.0,才比较好理解OAuth2.0的原理。SSO的实现有很多框架,比如CAS框架,以下是CAS框架的官方流程图。特别注意:SSO是一种思想,而CAS只是实现这种思想的一种框架而已

上面的流程大概为:
用户输入网址进入业务系统Protected App,系统发现用户未登录,将用户重定向到单点登录系统CAS Server,并带上自身地址service参数
用户浏览器重定向到单点登录系统,系统检查该用户是否登录,这是SSO(这里是CAS)系统的第一个接口,该接口如果用户未登录,则将用户重定向到登录界面,如果已登录,则设置全局session,并重定向到业务系统
用户填写密码后提交登录,注意此时的登录界面是SSO系统提供的,只有SSO系统保存了用户的密码,
SSO系统验证密码是否正确,若正确则重定向到业务系统,并带上SSO系统的签发的ticket
浏览器重定向到业务系统的登录接口,这个登录接口是不需要密码的,而是带上SSO的ticket,业务系统拿着ticket请求SSO系统,获取用户信息。并设置局部session,表示登录成功返回给浏览器sessionId(tomcat中叫JSESSIONID)
之后所有的交互用sessionId与业务系统交互即可
最常见的例子是,我们打开淘宝APP,首页就会有天猫、聚划算等服务的链接,当你点击以后就直接跳过去了,并没有让你再登录一次

三、OAuth3.0
OAuth2.0有多种模式,这里讲的是OAuth2.0授权码模式,OAuth2.0的流程跟SSO差不多,在OAuth2中,有授权服务器、资源服务器、客户端这样几个角色,当我们用它来实现SSO的时候是不需要资源服务器这个角色的,有授权服务器和客户端就够了。授权服务器当然是用来做认证的,客户端就是各个应用系统,我们只需要登录成功后拿到用户信息以及用户所拥有的权限即可
插播一条,如果你近期准备面试跳槽,建议在ddkk.com在线刷题,涵盖 1万+ 道 Java 面试题,几乎覆盖了所有主流技术面试题,还有市面上最全的技术栈500套,精品系列教程,免费提供。
用户在某网站上点击使用微信授权,这里的某网站就类似业务系统,微信授权服务器就类似单点登录系统
之后微信授权服务器返回一个确认授权页面,类似登录界面,这个页面当然是微信的而不是业务系统的
用户确认授权,类似填写了账号和密码,提交后微信鉴权并返回一个ticket,并重定向业务系统。
业务系统带上ticket访问微信服务器,微信服务器返回正式的token,业务系统就可以使用token获取用户信息了
简介一下OAuth2.0的四种模式:
1、 授权码(authorization-code);
授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。
1、 隐藏式(implicit);
有些Web 应用是纯前端应用,没有后端。这时就不能用上面的方式了,必须将令牌储存在前端。RFC 6749 就规定了第二种方式,允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)“隐藏式”(implicit)
1、 密码式(password);
如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password)。
1、 客户端凭证(clientcredentials);
最后一种方式是凭证式(client credentials),适用于没有前端的命令行应用,即在命令行下请求令牌。
简单流程

详细的OAuth2.0讲解
四、说一下几个名词的区别( Spring Security 、Shiro、OAuth3、JWT、SSO)
首先,SSO是一种思想,或者说是一种解决方案,是抽象的,我们要做的就是按照它的这种思想去实现它
其次,OAuth2是用来允许用户授权第三方应用访问他在另一个服务器上的资源的一种协议,它不是用来做单点登录的,但我们可以利用它来实现单点登录。在本例实现SSO的过程中,受保护的资源就是用户的信息(包括,用户的基本信息,以及用户所具有的权限),而我们想要访问这这一资源就需要用户登录并授权,OAuth2服务端负责令牌的发放等操作,这令牌的生成我们采用JWT,也就是说JWT是用来承载用户的Access_Token的
最后,Spring Security、Shiro是用于安全访问的,用来做访问权限控制,都是一个用Java写的框架
相关文章:
SSO单点登录和OAuth2.0区别
一、概述 SSO是Single Sign On的缩写,OAuth是Open Authority的缩写,这两者都是使用令牌的方式来代替用户密码访问应用。流程上来说他们非常相似,但概念上又十分不同。SSO大家应该比较熟悉,它将登录认证和业务系统分离,…...
【轻松玩转MacOS】基本操作篇
引言 本文是系列的开篇,我将为大家介绍MacOS的基本操作。对于初次接触MacOS的用户来说,掌握这些基本操作是必不可少的。无论是启动和关机,还是使用键盘和鼠标,或者是快捷键的使用,这些基本操作都是你开始使用MacOS的第…...
华为ICT——第三章图像处理基本任务
目录 1:数字图像处理的层次:(处理-分析-理解)顺序不能错: 2:图像处理(图像处理过程): 3:图像分析(特征提取): 4&#x…...
(C++)引用的用法总结
引用(reference)是C极为重要的一部分,本文对其用法进行简单总结。 1. 引用的基本用法 引用的关键字为&,表示取地址的意思,引用变量定义如下: int m 1; int &n m; //定义 cout<<"n:…...
Charles:移动端抓包 / windows客户端 iOS手机 / 手机访问PC本地项目做调试
一、背景描述 1.1、本文需求:移动端进行抓包调试 1.2、理解Charles可以做什么 Charles是一款跨平台的网络代理软件,可以用于捕获和分析网络流量,对HTTP、HTTPS、HTTP/2等协议进行调试和监控。使用Charles可以帮助开发人员进行Web开发、调试…...
【AI】深度学习——人工智能、深度学习与神经网络
文章目录 0.1 如何开发一个AI系统0.2 表示学习(特征处理)0.2.1 传统特征学习特征选择过滤式包裹式 L 1 L_1 L1 正则化 特征抽取监督的特征学习无监督的特征学习 特征工程作用 0.2.2 语义鸿沟0.2.3 表示方式关联 0.2.4 表示学习对比 0.3 深度学习0.3.1 表示学习与深度学习0.3.…...
RK3288:BT656 RN6752调试
这篇文章主要想介绍一下再RK3288平台上面调试BT656 video in的注意事项。以RN6752转接芯片,android10平台为例进行介绍。 目录 1. RK3288 VIDEO INPUT 并口 2. 驱动调试 2.1 RN6752 驱动实现 ①rn6752_g_mbus_config总线相关配置 ②rn6752_querystd配置制式 …...
LLMs 蒸馏, 量化精度, 剪枝 模型优化以用于部署 Model optimizations for deployment
现在,您已经了解了如何调整和对齐大型语言模型以适应您的任务,让我们讨论一下将模型集成到应用程序中需要考虑的事项。 在这个阶段有许多重要的问题需要问。第一组问题与您的LLM在部署中的功能有关。您需要模型生成完成的速度有多快?您有多…...
Milvus踩坑笔记
本文用于记录在学习 Milvus文档时所遇到的一些Bug或报错及解决方法 参考文章: 官方demo:在Dynamic Schema的集合中插入数据 报错1:auto id enabled, id shouldnt in entities[0] 问题描述 此报错出现在Milvus官方在介绍 Dynamic Schema …...
什么是轴电流?轴电流对轴承有什么危害?
根据同步发电机结构及工作原理,由于定子铁芯组合缝、定子硅钢片接缝,定子与转子空气间隙不均匀,轴中心与磁场中心不一致等,机组的主轴不可避免地要在一个不完全对称的磁场中旋转。这样,在轴两端就会产生一个交流电压。…...
react create-react-app v5配置 px2rem (不暴露 eject方式)
环境信息: create-react-app v5 “react”: “^18.2.0” “postcss-plugin-px2rem”: “^0.8.1” 配置步骤: 不暴露 eject 配置自己的webpack: 1.下载react-app-rewired 和 customize-cra-5 npm install react-app-rewired customize-cra…...
.net中用标志位解决socket粘包问题
以下为wpf中, 用标志位"q" 解决粘包问题 using MyFrameWorkWpf.Entities; using System.Collections.ObjectModel; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.…...
【Ubuntu】Systemctl 管理 MinIO 服务器的启动和停止
要使用 systemctl 来管理 MinIO 服务器的启动和停止,您需要创建一个 systemd 服务单元文件,以便 systemd 能够启动和停止 MinIO 服务器。下面是一般的步骤: 创建 systemd 服务单元文件: 打开终端并使用文本编辑器创建一个新的 sys…...
《golang设计模式》第二部分·结构型模式-07-代理模式(Proxy)
文章目录 1. 概述1.1 角色1.2 模式类图 2. 代码示例2.1 设计2.2 代码2.3 示例类图 1. 概述 代理(Proxy)是用于控制客户端访问目标对象的占位对象。 需求:在调用接口实现真是主题之前需要一些提前处理。 解决:写一个代理ÿ…...
Jmeter常用线程组设置策略
一、前言 在JMeter压力测试中,我们时常见到的几个场景有:单场景基准测试、单场景并发测试、单场景容量测试、混合场景容量测试、混合场景并发测试以及混合场景稳定性测试 在本篇文章中,我们会用到一些插件,在这边先给大家列出&…...
【Spring】Spring MVC 程序开发
Spring MVC 程序开发 一. 什么是 Spring MVC1. MVC2. Spring、Spring Boot 与 Spring MVC 二. 创建 Spring MVC 项目1. 创建项目2. 用户和程序的映射3. 获取用户请求参数①. 获取单个参数②. 获取多个参数③. 传递对象④. 后端参数重命名(后端参数映射)R…...
如何在企业网站里做好网络安全
在当今数字时代,网站不仅仅是企业宣传和产品展示的平台,更是日常生活和商业活动中不可或缺的一部分。然而,随着网络技术不断发展,网站的安全问题日益凸显。保护网站和用户数据的安全已经成为至关重要的任务,以下是一些…...
windows server 2012 服务器打开系统远程功能
服务器上开启远程功能 进入服务器,选择“添加角色和功能” 需要选择安装的服务器类型,如图所示 然后在服务器池中选择你需要使用的服务器。 选择完成后,在图示列表下勾选“远程桌面服务” 再选择需要安装的功能和角色服务。 选择完成确认内容…...
智能工厂MES系统,终端设备支持手机、PDA、工业平板、PC
一、开源项目简介 源计划智能工厂MES系统(开源版) 功能包括销售管理,仓库管理,生产管理,质量管理,设备管理,条码追溯,财务管理,系统集成,移动端APP。 二、开源协议 使用GPL-3.0开…...
GPT的优势和GPT缺点
GPT,即Generative Pre-trained Transformer,是一种基于人工智能技术的自然语言处理模型。它采用了深度学习算法,可以通过大量的文本数据来学习自然语言的规律,并能够生成流畅、准确的语句。下面我们将探讨GPT技术的优势。 首先&a…...
高通手机刷机救砖不求人:搞懂这10个关键分区,自己就能救活黑砖
高通手机刷机救砖实战指南:10个致命分区解析与精准修复 当你的爱机突然变成一块"黑砖",屏幕再无反应,甚至连充电指示灯都彻底熄灭时,那种绝望感每个玩机爱好者都深有体会。不同于普通的系统崩溃,黑砖状态意…...
ElevenLabs语音克隆效果翻倍秘技(实测SSML+声纹嵌入+噪声抑制三重优化)
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs语音克隆效果翻倍秘技(实测SSML声纹嵌入噪声抑制三重优化) ElevenLabs 的语音克隆能力虽强,但原始 API 调用常因语调扁平、背景干扰与韵律失真导致真实感不…...
【免费下载】 慧荣SM2258XT开卡工具集合
慧荣SM2258XT开卡工具集合 【下载地址】慧荣SM2258XT开卡工具集合 本仓库提供了一套专门针对慧荣SM2258XT主控的固态硬盘、移动硬盘及SSDM.2硬盘的开卡工具集合。该工具集合旨在解决因主控问题导致的设备无法识别、不识别或容量显示错误等问题。通过使用本工具包,您…...
【亲测免费】 探索卷积神经网络之美:一键绘制专业结构图的利器
探索卷积神经网络之美:一键绘制专业结构图的利器 【下载地址】卷积神经网络结构绘制工具 本资源适用于需要展示卷积神经网络具体结构的研究人员。用户下载本项目后,按照README官方教程中的“Getting Started”部分进行操作,简单学习语法后即可…...
量子纠错与Floquet码:动态编码与ZX演算实践
1. 量子纠错与Floquet码基础量子纠错码是构建容错量子计算机的核心技术。与传统纠错码不同,量子态具有不可克隆特性,使得量子纠错必须采用特殊方法。稳定子码(Stabilizer Codes)是目前最成熟的量子纠错方案,通过测量多…...
事件相机技术原理与应用全解析
1. 事件相机技术概述事件相机(Event Camera)是一种革命性的视觉传感器,它彻底改变了传统相机的图像采集方式。与普通相机不同,事件相机不会以固定帧率捕获完整的图像帧,而是异步检测每个像素的亮度变化。当某个像素位置…...
告别文献混乱!Mendeley保姆级入门指南:从安装、导入到Word引用,一篇搞定
Mendeley科研文献管理全流程实战:从零搭建高效学术工作流 刚踏入科研领域的研究生们,往往会被海量文献淹没——下载的PDF散落各处,引用格式五花八门,重复阅读相同文献却找不到重点。这种混乱不仅消耗时间,更会打断研究…...
Android项目集成CH340串口驱动:从官方Demo到体温检测模块的完整配置流程
Android项目集成CH340串口驱动:从官方Demo到体温检测模块的完整配置流程 在医疗设备、工业控制等物联网场景中,Android设备与外围硬件通过串口通信的需求日益增长。CH340作为一款高性价比的USB转串口芯片,因其稳定性和广泛兼容性成为许多硬件…...
阿里2026最新Spring全家桶学习笔记全网首次公开!
最近小伙伴在我后台留言是这样的: 现在就这光景,不比以前,会个CRUD就有人要,即使大部分公司依然只需要做CRUD的事情......现在去面试,只会CRUD还要被吐槽: 面试造火箭,工作拧螺丝,就…...
如何安全使用R3nzSkin:5分钟快速上手指南
如何安全使用R3nzSkin:5分钟快速上手指南 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin 想在英雄联盟中免费体验所有皮肤,又担心账号安全?R3nzSkin这款…...
