SpringSecurity(12)——OAuth2相关概念

角色

  1. 资源所有者(Resource Owner):通常是用户,如昵称、头像这些资源的拥有者(用户只是将这些资源放到服务提供商的资源服务器中)
  2. 第三方应用(Client):希望使用资源服务器提供的资源
  3. 认证服务器(Authorization Server):专门用于对资源所有者的身份进行认证,对要访问的资源进行授权、产生令牌的服务器。访问资源需要通过认证服务器由资源所有者授权才可以访问
  4. 资源服务器(Resource Server):存储用户的资源,验证令牌有效性。比如:维系资源服务器存储了微信用户信息
  5. 服务提供商(Service Provider):认证服务和资源服务归属于一个机构,该机构就是服务提供商
    在这里插入图片描述

授权码模式(Authorization Code)

OAuth在第三方应用和服务提供商之间设置一个授权层,第三方应用不能直接登录“服务提供商”,只可以通过授权层将“第三方应用”和“用户”区分开来。“第三方应用”通过授权层获取令牌(AccessToken),获取令牌后通过令牌去访问服务提供商。令牌和用户密码不同,可以指定授权层令牌的权限范围和有效期,“服务提供商”根据令牌的权限范围和有效期,向“第三方应用”开放用户对应的资源。

工作流程:

  1. 第三方应用向认证服务器请求授权
  2. 用户告知认证服务器同意授权(通常是通过用户扫码或输入“服务提供商”的用户名密码的方式)
  3. 认证服务器向第三方应用告知授权码(code)
  4. 第三方应用使用授权码(code)申请Access Token
  5. 认证服务器验证授权码,颁发Access Token
    在这里插入图片描述

简化模式(Implicit)

在这里插入图片描述

密码模式(Resource Owner Password Credentials)

将用户和密码传过去,直接获取Access Token,用户同意授权动作是在第三方应用上完成,而不是在认证服务器,第三方应用申请令牌时,直接带用户名和密码去向认证服务器申请令牌。这种方式认证服务器无法判断用户是否真的授权,用户和密码可能是第三方应用盗取的

工作流程:

  1. 用户向客户端直接提供认证服务器想要的用户名和密码
  2. 客户端将用户名和密码发给认证服务器,向认证服务器请求令牌
  3. 认证服务器确认后,向客户端提供访问令牌

客户端模式(Client Credentials)

当一个第三方应用自己本身需要获取资源,而不是获取用户资源时,客户端模式十分有用

工作流程:

  1. 客户端向认证服务器进行身份认证,并要求一个访问令牌
  2. 认证服务器确认后,向客户端提供访问令牌

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot+vue的科研工作量管理系统的设计与实现(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的科研工作量管理系统的设计与实现(有报告),Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的科研工作量管理系统的设计与实现…

一分钟教你搭建《幻兽帕鲁》服务器

幻兽帕鲁是一款由Pocketpair开发的开放世界生存游戏,融合了多种玩法的游戏,其独特的题材和画风吸引了很多玩家,越来越多的玩家开始尝试自己搭建服务器,享受更加自由的游戏体验。本文将为大家详细介绍如何从零开始搭建《幻兽帕鲁》…

Git的管理操作

目录 前言 认识工作区、暂存区、版本库 小结: 使用场景--1: git log: 查看.git文件: 使用场景--2: git status: git diff: 进行提交: 总结: 版本回退 退…

java垃圾回收GC过程

GC(Gabage Collection) 用于回收堆中的垃圾数据 清理方法 1.标记-清理 对数据标记,然后清理 缺点:容易产生内存碎片 2.标记-整理 对标记后的数据清理,剩下数据前移 缺点:每次清理后数据都要迁移&#xff0…

Socket多进程模型

基于最原始的阻塞网络 I/O, 如果服务器要支持多个客户端,其中比较传统的方式,就是使用多进程模型,也就是为每个客户端分配一个进程来处理请求。 服务器的主进程负责监听客户的连接,一旦与客户端连接完成,a…

【jetson笔记】解决vscode远程调试qt.qpa.xcb: could not connect to display报错

配置x11转发 jetson远程安装x11转发 安装Xming Xming下载 安装完成后打开安装目录C:\Program Files (x86)\Xming 用记事本打开X0.hosts文件,添加jetson IP地址 后续IP改变需要重新修改配置文件 localhost 192.168.107.57打开Xlaunch Win菜单搜索Xlaundch打开 一…

上市公司-避税程度(2000-2022年)(数据+4种方法测算)

上市公司的避税程度是一个重要的财务指标,可以通过多种方式进行研究和分析。以下是一些可以用来研究上市公司避税程度的方法和指标:财务报表分析:可以通过分析公司的财务报表,特别是利润表和资产负债表,来识别潜在的避…

【裁员潮】技术变革下的职业危机,程序员会有多大影响,又应该如何面对

大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】序列文章,这一次的话题是《技术变革下的裁员潮》 文章将以博主的角度进行讲述,理解和水平有限,不足之处,望指正。 目录 背景硬实力职业危机…

Nas-FPN(CVPR 2019)原理与代码解析

paper:NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection third-party implementation:https://github.com/open-mmlab/mmdetection/tree/main/configs/nas_fpn 本文的创新点 本文采用神经网络结构搜索(Neur…

【JavaWeb】日程管理系统 项目搭建 第二期

文章目录 一、数据库准备二、导入依赖 与 JDBC工具类三、pojo包处理四、daodao包工具类 五、service六、controllerservlet 基类 反射 七、加密工具类 MD5八、页面文件九、业务代码9.1 注册业务处理9.2 登录业务处理 总结 一、数据库准备 创建数据库: SET NAMES …

【码农新闻】浏览器上有趣的 Console 命令,VSCode 插件 FreeWindow......

目录 【码农新闻】浏览器上有趣的 Console 命令,VSCode 插件 FreeWindow...... 浏览器上有趣的 Console 命令VSCode 插件 FreeWindow拖拽竟然还能这样玩!阮一峰 ES6 教程总结学习网站总结与整理买临期食品的年轻人,在向“吃喝内卷”低头文章所属专区 码农新闻 欢迎各位编程大…

​第20课 在Android Native开发中加入新的C++类

​这节课我们开始利用ffmpeg和opencv在Android环境下来实现一个rtmp播放器,与第2课在PC端实现播放器的思路类似,只不过在处理音视频显示和播放的细节略有不同。 1.压缩备份上节课工程文件夹并修改工程文件夹为demo20,将demo20导入到Eclipse或…