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

news2024/11/27 20:58:16

一.简介

这篇文章来讲下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.人生不能像做菜,把所有的材料都准备好了才下锅。

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

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

《让子弹飞》

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

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

赚钱嘛,不寒碜

《被嫌弃的松子的一生》

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

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

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

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

《美国往事》

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

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

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

《少年派的奇幻漂流》

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

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

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

《罗生门》

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

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

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

《阿甘正传》

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我有一个朋友,分享给我的字节跳动测试开发真题

朋友入职已经两周了,整体工作环境还是非常满意的!所以这次特意抽空给我写出了这份面试题,而我把它分享给小伙伴们,面试&入职的经验! 大概是在3月中的时候他告诉我投递了简历,5月的时候经过了3轮面试收获…

Windows10中搭建ftp服务器以实现文件传输

开启ftp服务: 1、打开控制面板》程序和功能》 启用或关闭Windows功能 2、找到Internet Information Services,开启以下服务 勾选之后,ftp服务开启成功。 配置IIS,搭建ftp 1、WinS键搜索iis,回车打开》右击网站 》添加…

QUIC 协议:特性、应用场景及其对物联网/车联网的影响

什么是 QUIC 协议 QUIC(Quick UDP Internet Connections)是由谷歌公司开发的一种基于用户数据报协议(UDP)的传输层协议,旨在提高网络连接的速度和可靠性,以取代当前互联网基础设施中广泛使用的传输控制协议…

/dev/kmem /proc/kallsyms

文章目录 前言概述使用 /dev/kmem使用 /proc/kallsyms验证进阶 前言 上篇文章我们介绍了 /dev/mem,今天再来介绍下它的好兄弟 /dev/kmem crw-r----- 1 root kmem 1, 1 May 26 06:10 /dev/mem crw-r----- 1 root kmem 1, 2 May 26 06:10 /dev/kmem对比一下&#xf…

第十四届全国大学生数学竞赛决赛(非数类)游记+答案解析

2023/5/27 20:08:今天早上9:00~12:00考了数学竞赛国赛。广州是真的热啊!西安才17度,还下着小雨,到广州之后那个艳阳直接给我人干废了,去酒店的路上步行了20分钟真的要死了已经。 拿到卷子的我是崩溃的,用正…

计算机视觉:填充(padding)技术

本文重点 在前面的课程中,我们学习了使用3*3的过滤器去卷积一个5*5的图像,那么最终会得到一个3*3的输出。那是因为 33 过滤器在 55 矩阵中,只可能有 33 种可能的位置。 这背后的数学解释是,如果我们有一个nn的图像,用ff的过滤器做卷积,那么输出的维度就是(n−f+1)(n−f…

码出高效_第一章 | 有意思的二进制表示及运算

目录 0与1的世界1.如何理解32位机器能够同时处理处理32位电路信号?2.如何理解负数的加减法运算3.溢出在运算中如何理解4.计算机种常用的存储单位及转换5.位移运算规则6.有趣的 && 和 & 浮点数1.定点小数(为什么会出现浮点数表示?…

Linux 系统烧写

目录 MfgTool 工具简介MfgTool 工作原理简介烧写方式系统烧写原理 烧写NXP 官方系统烧写自制的系统系统烧写网络开机自启动设置 改造我们自己的烧写工具改造MfgTool烧写测试解决Linux 内核启动失败 前面我们已经移植好了uboot 和linux kernle,制作好了根文件系统。但…

Spring 事件相关知识ApplicationEvent

Spring 事件相关知识ApplicationEvent 事件工作流程相关类ApplicationListenerApplicationEvent 我们可以发布自己的事件ApplicationEventPublisher Spring框架中提供了多种事件类型,常用的几个事件类型如下: Spring 事件驱动模型是 Spring 框架中的一个…

uCOSii中的事件标志组

事件标志管理 (EVENT FLAGS MANAGEMENT) OSFlagAccept() 无等待查询”事件标志组的事件标志位”是否建立 OSFlagPend() 需要等待”事件标志组的事件标志位”建立 OSFlagCreate() 建立一个事件标志组 OSFlagDel() 删除一个事件标志组 OSFlagPost() 置位或清0事件标志组中的…

SpringBoot整合百度云人脸识别功能

SpringBoot整合百度云人脸识别功能 1.在百度官网创建应用 首先需要在百度智能云官网中创建应用,获取AppID,API Key,Secret Key 官网地址:https://console.bce.baidu.com/ 2.添加百度依赖 添加以下依赖即可。其中版本号可在mav…

【问卷分析】调节效应检验的操作①

文章目录 1.首先要明白自己的调节和自变量是什么类别的2.实操演练2.1 当调节变量是连续变量时2.1.1 将ml中心化2.1.2 使用分层回归探讨自变量和ml的交互对adh的影响2.1.3 结果解读 1.首先要明白自己的调节和自变量是什么类别的 2.实操演练 在本次演练中,我们以自变…

马斯克要用人工智能对抗人工智能

导读:马斯克对人工智能可能变得失控并“摧毁人类”的担忧促使他采取行动,发起了一个名为“TruthGPT”的项目。 本文字数:1400,阅读时长大约:9分钟 亿万富翁埃隆马斯克在谈到人工智能(AI)的危险时…

瑞合信LED字幕WiFi卡使用教程(8.0版)

请按照提示下载和安装软件,同时请允许所有权限,如下图; 也可以在各大主流应用商店(华为、小米、OPPO、vivo、App Store等)搜索“瑞合信”直接安装。 首次使用APP时会提示注册登录软件,你可以选择“使用微信…

深度学习进阶篇-预训练模型[4]:RoBERTa、SpanBERT、KBERT、ALBERT、ELECTRA算法原理模型结构应用场景区别等详解

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

Full-Scanner是一个多功能扫描工具,支持被动/主动信息收集,漏洞扫描工具联动,可导入POC和EXP

github项目地址:https://github.com/Zhao-sai-sai/Full-Scanner gitee项目地址:https://gitee.com/wZass/Full-Scanner 工具简介 做挖漏洞渗透测试有的时候要去用这个工具那个工具去找感觉麻烦我自己就写了一个简单的整合工具,有互联网大佬不…

Presto之BroadCast Join的实现

一. 前言 在Presto中,Join的类型主要分成Partitioned Join和Broadcast Join,在Presto 之Hash Join的Partition_王飞活的博客-CSDN博客 中已经介绍了Presto的Partitioned Join的实现过程,本文主要介绍Broadcast Join的实现。 二. Presto中Broa…

ChatGPT免费使用的方法有哪些?

目录 一、ChatGpt是什么? 二、ChatGPT国内免费使用的方法: 第一点:电脑端 第二点:手机端 三、结语: 一、ChatGpt是什么? ChatGPt是美国OpenAI [1] 研发的聊天机器人程序 。更是人工智能技术驱动的自然语…

1. 从JDK源码级别彻底刨析JVM类加载机制

JVM性能调优 1. 类加载的运行全过程1.1 加载1.2 验证1.3 准备1.4 解析 本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。 课程内容: 1、从java.exe开始讲透Java类加载运行全过程 2、从JDK源码级别剖析JVM核…

【地铁上的面试题】--基础部分--数据结构与算法--数组和链表

零、章节简介 《数据结构与算法》是《地铁上的面试题》专栏的第一章,重点介绍了技术面试中不可或缺的数据结构和算法知识。数据结构是组织和存储数据的方式,而算法是解决问题的步骤和规则。 这一章的内容涵盖了常见的数据结构和算法,包括数组…