Springboot +spring security,OAuth2 四种授权模式概念

一.简介

这篇文章来讲下Spring Security OAuth2 四种授权模式。

二.什么是OAuth2

OAuth 2.0 是一种用于授权的开放标准,允许用户授权第三方应用程序访问他们的资源,例如照片、视频或其他个人信息。OAuth 2.0 提供了一些不同的授权模式,包括授权码模式、简化模式、密码模式和客户端模式等。这些授权模式允许客户端应用程序在不要求用户提供其密码或其他敏感信息的情况下,安全地访问受保护资源。

OAuth 2.0 的核心思想是将认证和授权分离开来,允许用户授权一个应用程序代表他们执行某些操作。OAuth 2.0 框架中的主要角色包括:

用户:资源的所有者,可以授权应用程序访问他们的资源。客户端:请求访问资源的应用程序。授权服务器:处理 OAuth 2.0 协议,负责验证用户身份并生成访问令牌。资源服务器:存储受保护的资源,并根据授权服务器颁发的访问令牌控制对这些资源的访问。OAuth 2.0 在互联网应用程序开发中被广泛使用,大多数社交网络和 API 都支持该协议。它允许开发人员构建安全的应用程序,用户可以控制对其资源的访问权限。

三.OAuth2 的四种模式

3.1授权码模式(Authorization Code Grant)

3.1.1什么是授权码模式

授权码模式是 OAuth 2.0 的标准授权方式,常用于服务端应用程序,也适用于移动应用程序。该模式通过授权服务器为客户端生成一个授权码,在授权码的基础上请求访问令牌。

3.1.2授权流程

授权流程截图如下:
在这里插入图片描述

  1. 客户端向用户展示认证页面。
  2. 用户输入用户名和密码,向授权服务器发送请求。
  3. 授权服务器验证用户信息,如果验证成功,生成授权码。
  4. 授权服务器返回授权码给客户端。
  5. 客户端使用授权码向授权服务器请求令牌。
  6. 授权服务器验证授权码的有效性,如果有效则返回令牌。

3.2简化模式(Implicit Grant)

3.2.1什么是授权码模式

简化模式主要用于移动应用程序和 Web 前端应用程序等场景下。该模式省略了授权码这一步骤,直接通过浏览器在客户端和授权服务器之间进行交互。

3.2.2授权流程

授权流程截图如下:
在这里插入图片描述

  1. 客户端向授权服务器发送认证请求。
  2. 授权服务器验证用户身份,如果验证成功则向浏览器返回令牌。
  3. 浏览器将令牌传递给客户端。

3.3密码模式(Resource Owner Password Credentials Grant)

3.3.1什么是密码模式

密码模式是一种简单的授权方式,主要用于受信任的客户端应用程序。该模式要求用户将自己的用户名和密码直接提供给客户端应用程序,客户端应用程序使用这些凭证向授权服务器请求访问令牌。

3.3.2授权流程

授权流程截图如下:
在这里插入图片描述

  1. 用户向客户端提供用户名和密码。
  2. 客户端向授权服务器发送包含用户凭证的请求。
  3. 授权服务器验证用户凭证,如果验证成功则返回令牌。

3.4客户端模式(Client Credentials Grant)

3.4.1什么是客户端模式

客户端模式适用于后台服务与其他服务进行通信的场景。该模式下,客户端应用程序通过自身的身份向授权服务器请求访问令牌,并使用该令牌访问资源服务器。

3.4.2授权流程

授权流程截图如下:
在这里插入图片描述

  1. 客户端向授权服务器发送包含自身身份信息的请求,包括客户端 ID 和密钥。
  2. 授权服务器验证客户端身份,如果验证成功则返回令牌。
  3. 客户端使用令牌向资源服务器请求访问资源。

《肖申克的救赎》

生命可以归结为一种简单的选择:要么忙于生存,要么赶着去死。

懦怯囚禁人的灵魂,希望可以感受自由。强者自救,圣者渡人。

希望是件美丽的东西,也许是最好的东西。美好的东西是永远不会死的。

每个人都是自己的上帝。如果你自己都放弃自己了,还有谁会救你?

《熔炉》

我们一路奋战,不是为了能改变世界,而是为了不让世界改变我们。

现实如水母,看似美好无害实质总是致命伤人。

我们来到世界上,都是孤独的旅行,即使身边有人相伴,最终也会各奔东西!

世界上最美丽最珍贵的,反而是听不见且看不清的,只有用心才能感受得到。

《教父》

人可以不断犯错,但绝不能犯要命的错。

不要憎恨你的敌人,那会影响你的判断力。

人并非生来就伟大,而是越活越伟大。

《活着》

人是为了活着本身而活着,而不是为了活着之外的任何事物而活着。

以笑的方式哭,在死亡的伴随下活着。

没有什么比时间更具有说服力了,因为时间无需通知我们就可以改变一切。

你的命是爹娘给的,你不要命了也得先去问问他们。

《我不是药神》

世界上只有一种病,穷病,这种病你没法治,你也治不过来。

人间最高贵的是善良,是对生命的致敬。

《指环王》

把手握紧,里面什么也没有;把手放开,你得到的是一切。

我宁愿和你共度凡人短暂的一生,也不愿一个人看尽这世界的沧海桑田。

20.幸福的家庭都是相似的,不幸的家庭各有各的不幸。

或许有一天,人类变得萎缩懦弱,舍弃朋友,断绝友谊,但今天决不会这样。
《饮食男女》

22.人生不能像做菜,把所有的材料都准备好了才下锅。

什么叫做“可惜”啊,要心中有个“惜”字儿,才知道可惜。

其实一家人,住在一个屋檐下,照样可以各过各的日子,可是从心里产生的那种顾忌,才是一个家之所以为家的意义。

《让子弹飞》

世界上本没有路,有了腿便有了路。

如果你活着,早晚都会死;如果你死了,你就永远活着。

赚钱嘛,不寒碜

《被嫌弃的松子的一生》

小时候,谁都觉得自己的未来闪闪发光,不是吗?但是一旦长大,没有一件事会遂自己心愿。

要么伤心地长吁短叹,要么沉醉于悲伤中,要么草草的了结了一生,要么笑着搪塞过去,将错就错。

人的心灵是脆弱的,难以做到为自己恨的人祈祷。原谅不可原谅的人,并为之祈祷,这就是上帝的爱。

想要在这个世界上留下自己活过的证据,因为好不容易生而为人。

《美国往事》

不管何时何地,做你想做的事永远都不嫌晚 。

孤独并不可怕,可怕的是恐惧孤独。

你要一直不停地往前走,不然你不会知道生活还会给你什么。

《少年派的奇幻漂流》

这里必须说说恐惧,它是生活惟一真正的对手,因为只有恐惧才能打败生活。

人生就是不断的放下,但最遗憾的是,我们来不及好好告别!

如果我们在人生中体验的每一次转变都让我们在生活中走得更远,那么,我们就真正的体验到了生活想让我们体验的东西。

《罗生门》

沾沾自喜者只管自喜就是,但就别人说三道四则属多管闲事。

较之希望得到什么,我们更多是同"能够"得到什么达成妥协。

撒谎是人之本性,在大多数时间里我们甚至都不能对自己诚实。那是因为人们太脆弱了所以才撒谎,甚至是对自己撒谎。

《阿甘正传》

人生就像一盒巧克力,你永远不知道会尝到哪种滋味。

“你以后想成为什么样的人?”
“什么意思,难道我以后就不能成为我自己了吗?”

我不觉得人的心智成熟是越来越宽容涵盖,什么都可以接受。相反,我觉得那应该是一个逐渐剔除的过程,知道自己最重要的是什么,知道不重要的东西是什么。而后,做一个简单的人。

一个人真正需要的财富就那么一点点,其余的都是用来炫耀的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/26346.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

测试替身Test Doubles的5类型(Mockito)

测试替身Test Doubles的5类型(Mockito) 我们有一个名为 BankAccount 的类。 数据库用于存储和检索银行帐户信息。 我们想测试 BankAccount 中的逻辑,而不必担心它使用的底层数据库.由此类实现——它将 SQL 查询发送到数据库并返回其中包含的值。 测试替身Test Dou…

Django实现接口自动化平台(五)httprunner(4.x)介绍【持续更新中】

上一章: Django实现接口自动化平台(四)解决跨域问题【持续更新中】_做测试的喵酱的博客-CSDN博客 下一章: 一、httpruner介绍 1.1 背景: 之所以学习httpruner的用法,是要把httpruner嵌入我们的自动化平…

自动缩放Kubernetes上的Kinesis Data Streams应用程序

想要学习如何在Kubernetes上自动缩放您的Kinesis Data Streams消费者应用程序,以便节省成本并提高资源效率吗?本文提供了一个逐步指南,教您如何实现这一目标。 通过利用Kubernetes对Kinesis消费者应用程序进行自动缩放,您可以从其…

2023年陕西彬州第八届半程马拉松赛153pb完赛

1、赛事背景 2023年6月3日,我参加了2023陕西彬州第八届半程马拉松赛,最终153完赛,PB了5分钟。起跑时间早上7点30分,毕竟6月天气也开始热了。天气预报显示当天还是小到中雨,上次铜川宜君半马也是雨天跑的,阴…

lecory 波形二进制文件头(.trc)定义

1.文件头,从0字节开始 byte[] lecroy_trc_header new byte[]{0x23,0x39,0x30,0x30,0x32,0x30,0x30,0x30,0x31,0x34,0x34,0x57,0x41,0x56,0x45,0x44,0x45,0x53,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x45,0x43,0x52,0x4F,0x59,0x5F,0x32,0x5F,0x33,0x…

研发工程师玩转Kubernetes——使用Ingress进行路由

依据微服务理念,我们希望每个独立的功能由一个服务支持。比如有两个接口:http://www.xxx.com/plus和http://www.xxx.com/minus,前者由一个叫plus-service的服务支持,后者由一个叫minus-service的服务支持。这样就需要一个路由层&a…

Revit问题:创建牛腿柱和快速生成圈梁

一、Revit中如何用体量创建牛腿柱 牛腿:悬臂体系的挂梁与悬臂间必然出现搁置构造,通常就将悬臂端和挂梁端的局部构造,又称梁托。牛腿的作用是衔接悬臂梁与挂梁, 并传递来自挂梁的荷载。牛腿柱可以用于桥梁、厂房的搭建&#xff0c…

西南财经大学李玉周:数智化技术广泛使用推动管理会计加快落地

近日,由用友主办的「智能会计 价值财务」2023企业数智化财务创新峰会收官站圆满举办。来自知名院校的专家学者、央国企等大型企业财务领路人相约成都,一同见证“智能会计”新时代的到来,并肩探讨“价值财务”新主张。 为更好传递智能会计对企…

【接口测试】JMeter接口关联测试

‍‍1 前言 我们来学习接口管理测试,这就要使用到JMeter提供的JSON提取器和正则表达式提取器了,下面我们来看看是如何使用的吧。 2 JSON提取器 1、添加JSON提取器 在线程组右键 > 添加 > 后置处理器 > JSON提取器 2、JSON提取器参数说明 N…

chatgpt赋能python:Python如何删除行:从入门到精通

Python如何删除行:从入门到精通 在Python编程中,删除行是必不可少的操作之一。无论是清除不必要的数据,还是在数据集中删除重复行,或者在文本文件中删除某些行,删除行都是一项极其重要的任务。 什么是Python语言&…

Shell脚本攻略:文本三剑客之sed

目录 一、理论 1.sed 二、实验 1.sed命令的寻址打印 2.显示奇偶 3.查找替换 4.后向引用 一、理论 1.sed (1) 概念 sed 英文全称为stream editor流式编辑器,sed 对输入流(文件或来自管道的输入)执行基本文本转换单通过流,…

Matlab进阶绘图第22期—不等宽柱状图

不等宽柱状图是一种特殊的柱状图。 与常规柱状图相比,不等宽柱状图可以通过柱高与柱宽分别表达两个维度的数据,因此在多个领域得到应用。 在《Matlab论文插图绘制模板第91期》中,虽有介绍过利用Matlab自带bar函数绘制不等宽柱状图的方法&am…

高完整性系统(7)Formal Verification and Validation

文章目录 Specification Process 规格化过程State Invariants案例check ... expect Alloy是一种用于构建和检查抽象模型的语言和工具。当Alloy说所有断言都成立时,这意味着你的模型或规格在给定范围内已成功通过了所有的断言检查。换句话说,对于你所定义…

C#实例:多功能Windows窗体应用程序Helloworld_WinForm

有了创建一个Windows窗体应用程序的经验,就可以开始尝试运用更多的控件实现更多丰富的功能界面。以下分享我基于项目Helloworld_WinForm使用常用C#Windows窗体控件实现一些小功能。 每一节标题为所用到的控件,全文以实际制作过程为序编制。 目录 WinFor…

来了解一下白盒测试,黑盒测试,灰盒测试吧(超详解~)

根据被测对象的不同,软件测试可以分为白盒测试、黑盒测试、灰盒测试三种方式。那么,这三种测试方式具体是如何运行的?各有什么特点?下面,跟着静姐一起了解一下吧! 01、白盒测试 WHITE BOX ●概念&#x…

PACS影像解决方案

现代医学影像技术的迅猛发展,使得PACS系统已逐渐成为各级医院实现信息化建设的重要组成部分。医学影像技术的进步也提升了医学影像的清晰度,推动二维PACS向三维升级转变。这一切都使得医学影像数据量激增,加之医疗行业法规的数据保存要求&…

Android平台OpenCV入门

一、导入OpenCV 别忘记把libopencv_java3.so添加进来。 二、初始化 OpenCVLoader.initDebug();三、常用方法 1. CvType 数据类型 以CV_64FC2为例,64指64位,F指浮点数,C指通道,2为2通道。 数值具体类型取值范围CV_8U8 位无符…

软件工程导论(四)软件编码测试与维护

一、软件编程 1.1良好的编程习惯 变量命名有意义并且使用统一的命名规则 编写自文档代码(序言性注释 or 行内注释) 提前进行可维护性考量(可以用常量的方式存在的数值最好以变量的方式存在) 良好的视觉安排可以提高代码的可读性(…

SOLIDWORKS技巧培训-绘制零件滚花的两种方法

最近常有朋友咨询SolidWorks零件如何做滚花的效果,下面给大家整理了绘制零件滚花的一个培训教程: 作为机械设计师,滚花应该都不陌生,真要说起来,滚花绘制其实也不算难,跟着我们一步一步来,应该…

ThreeJS 炫酷特效旋转多面体Web页 Demo 01《ThreeJS 炫酷特效制作》

本案例为一个 threejs 的特效网页,大小球体进行包裹,外球体为透明材质,但是进行了线框渲染,使其能够通过外球踢查看其内球体。 注:案例参考源于互联网,在此做代码解释,侵删 本案例除 ThreeJS 外…