OAuth2、JWT

文章目录

    • OAuth2
    • JWT


OAuth2

  • 官网: https://oauth.net/2/

在 RFC 6749 中说明


1、资源所有者 resource owner, 如 github 用户
2、客户端/第三方应用 client, 如 支持github 登录的 csdn
3、资源服务器 resource server, 如
4、授权服务器 authorization server


授权所需信息

  • 应用名称
  • 应用网站
  • 重定向 URI 或回调 URL(redirect_uri)
  • 客户端标识 client_id
  • 客户端秘钥 client_secret

如 github 授权 app:

在这里插入图片描述


OAuth 授权方式
有以下四种

  1. 授权码模式 Authorization Code,功能最完整、流程最严密
  2. 简化模式 Implict Grant;省去了第三方应用的服务器;不建议,token 会暴露。为web浏览器设置。
  3. 密码模式 Resource Owner Password Credentials Grant,csdn 让用户输入 github 账号密码,再将密码给 github 请求;不建议。为遗留项目设计。
  4. 客户端模式 Client Credentials Grant。用客户端的秘钥获取 token,不需要用户参与。为后台API 服务消费者设计。

授权码模式 参数

  • response_type,必须,固定为 code,表示这是一个授权码请求;
  • client_id,必须,在授权服务器祖册应用后的到的唯一标识;
  • redirect_uri,可选,通过客户端注册的重定向 URI,一般要求和注册时一致;
  • scope,可选,请求资源范围,多个空格隔开;
  • state,可选(推荐),如果存在,原样返回给客户端。

JWT

  • 官网:https://jwt.io

JWT : JSON Web Token,通过数字签名的方式,以 json 对象为载体,在不同的服务终端之间安全的传输信息。


常见应用场景:授权认证
一旦用户登录后,后续每个请求都包含 JWT,系统在每次处理用户请求之前,都要进行 JWT 安全校验,通过之后再进行处理。


JWT 由三部分组成,用 . 拼接
三部分分别是:
1、 Header

{
	'typ': 'JWT', // token 类型
	'alg', 'HS256'  // 算法名称
}

2、Payload 载荷,存放有效信息
对这个数据进行 base64 加密

{
	'sub': '1234567', //  
	'name', 'john'  //  
	'admin', true  //  
}

3、Signature
加密后的 Header 和 Payload 用 . 拼接,让后将结果,用 header 中申明的算法再加盐加密一次。

var encodedstring = base64UrlEncoder(header) + '.' + base64UrlEncoder(payload);
var signature = HMACSHA256(encodedstring, 'secret')

参考

  • 魔王不造反:彻底理解 OAuth2 协议
    https://www.bilibili.com/video/BV1zt41127hX
  • 阮一峰:OAuth 2.0 的四种方式
    https://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html

伊织 2022-03-26

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

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

相关文章

【C/C++笔试练习】OSI分层模型、源端口和目的端口、网段地址、SNMP、状态码、tcp报文、域名解析、HTTP协议、计算机网络、美国节日、分解因数

文章目录 C/C笔试练习选择部分(1)OSI分层模型(2)源端口和目的端口(3)网段地址(4)SNMP(5)状态码(6)tcp报文(7)域…

GRASSHOPPER电池Expression

Grasshopper中如果要实现简单的条件if语句的效果,可以使用电池Expression。 举例:获取两个数的差值,永远用大数减去小数

Geoserver中点击切片图层报错问题

最近想试试wmts,其中有一步需要用到切片图层 但是点击页面老是报错, 于是乎想断点,可惜代码太复杂 弃了,所以想重新部署一下新版本,结果还是报错,想着可能tomcat有缓存吧,在换个tomcat还是报错…

《QT实用小工具·四十二》圆形发光图像

1、概述 源码放在文章末尾 该项目实现了图像的发光效果,特别适合做头像,项目demo演示如下所示: 项目部分代码如下所示: import QtQuick 2.7 import QtGraphicalEffects 1.12Item {id: rootwidth: 80height: 80property int ra…

【JVM】java内存区域

目录 一、运行时数据区域 1、方法区 2、堆 3、虚拟机栈 4、本地方法栈 5、程序计数器 6、运行时常量池 二、HotSpot虚拟机的对象 1、对象的创建 指针碰撞: 空闲列表: 2、对象的内存布局 对象头 实例数据 对齐填充 3、对象的访问定位 句…

一种基于 RFID 技术的养老院人员定位解决方案

在今日的中国社会结构老龄化日趋增长,带来了一系列的社会问题。社会老龄化、高龄化、空巢化和病残化的迅速发展,将使得越来越多的老人住进养老院。养老院主要为老人提供集体居住,并具有相对完整的配套服务设施。养老院管理的最终目的就是为老…

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Combo Box的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 输入类控件 | Combo Box的使用及说明 文章编号&#xff…

张大哥笔记:普通人如何搞钱?

追求短期利润和长期价值相结合的创业方式,是我一直倡导的。短期内寻求盈利的项目进行快速变现,比如各种小风口项目,而长期项目则需保持数年乃至10年不变,比如自媒体内容输出,做有长期价值的事情! 短期项目通…

详解MySQL C API 相关接口(大白话就是:MySQL的c语言怎么写)

文章目录 1、C API 官方文档2、初始化 MYSQL3、连接 MySQL设置连接字符集(使得客户端编码方式匹配) 4、下发 mysql 指令5、获取 mysql 查询结果(保存起来)获取行与列遍历存储结果 6、释放 MYSQL\_RES 对象7、关闭 MySQL 连接8、总结 1、C API 官方文档 …

Linux安装Docker的多版本PHP和多版本MySQL共存

1: 先安装docker 安装完后执行,权限设置 sudo usermod -aG docker $USER或者sudo usermod -aG docker kentrl#添加当前用户到Docker用户组中 sudo newgrp docker#更新用户组数据,必须执行否则无效 sudo systemctl restart docker 先看目录结构: 2:按照目录结构挂载磁盘,…

(一)Amira入门实例

1.打开Amira安装目录下的数据Foam.am图片,打开之后选择“um”选项。 2. 添加一个2D和3D显示组件,即Ortho Slice和Volume Rendering,分别为2D显示和3D显示(模块左侧绿点控制是否显示): 颜色反转之后&#xf…

C# GetField 方法应用实例

目录 关于 C# Type 类 GetField 方法应用 应用举例 心理CT设计题 类设计 DPCT类实现代码 小结 关于 C# Type 类 Type表示类型声明:类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开放或封闭构造的泛型类型。调用 t…

第十五届蓝桥杯省赛第二场C/C++B组G题【最强小队】题解

20pts 枚举所有可能的左端点、右端点,时间复杂度 O ( n 2 ) O(n^2) O(n2)。 对于每个区间进行遍历检测,时间复杂度 O ( n 3 ) O(n^3) O(n3)。 100pts 由于数据范围为 1 0 5 10^5 105,所以肯定只能进行一次枚举。 我们尝试枚举右端点&…

winform实现的调用bartender打印工具-标签模版管理

生产型企业基本都有条码追溯管理的需求&#xff0c;不同的产品有不同的标签样式规格以及内容&#xff0c;打印的条码往往需要追溯以及防重校验&#xff0c;因此市面有很多打印软件&#xff0c;今天分享基于winform开发的调用bartender标签的工具。 先上效果图 /// <summary…

软考 - 系统架构设计师 - 设计模式

目录 概念 创建型设计模式 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09; 优点 缺点 应用场景 总结 构建器模式&#xff08;Builder Pattern&#xff09; 优点 缺点 应用场景 工厂方法模式&#xff08;factory method&#xff09; 优点 缺点 应…

AES 加解密(包含JS、VUE、JAVA、MySQL)工具方法

介绍 AES 是 Advanced Encryption Standard 的缩写&#xff0c;是最常见的对称加密算法。AES 在密码学中又称 Rijndael 加密法&#xff0c;是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES&#xff0c;已经被多方分析且广为全世界所使用。 基本原理&#…

3.8设计模式——State 状态模式(行为型)

意图 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 结构 Context&#xff08;上下文&#xff09;定义客户感兴趣的接口&#xff1b;维护一个ConcreteState子类的实例&#xff0c;这个实例定义当前状态。State&#xff08;状态&#xff09;定义…

微软发布!提示工程进化为位置工程,有效提升RAG与上下文学习

别再光顾着优化提示工程啦&#xff01;微软最近推出位置工程研究思路&#xff0c;只需调整token的索引位置&#xff0c;而不修改文本本身&#xff0c;就能显著提高任务性能。 提示工程通过添加、替换或删除段落和句子改变提示&#xff0c;调整语义信息&#xff0c;激发LLMs的推…

Leetcode刷题之——队列Queue|先入先出FIFO|广度优先搜索BFS|栈Stack|后入先出LIFO|深度优先搜索DFS

Leetcode刷题之——队列Queue|先入先出FIFO|广度优先搜索BFS|栈Stack|后入先出LIFO|深度优先搜索DFS 1. 队列(Queue)——FIFO&#xff0c;先入先出的数据结构1.1 循环队列1.2 内置队列的常用方法&#xff08;C&#xff09;1.3 广度优先搜索&#xff08;BFS&#xff09; 2.栈(St…

Unity Meta Quest MR 开发(七):使用 Stencil Test 模板测试制作可以在虚拟与现实之间穿梭的 MR 传送门

文章目录 &#x1f4d5;教程说明&#x1f4d5;Stencil Test 模板测试&#x1f4d5;Stencil Shader&#x1f4d5;使用 Unity URP 渲染管线设置模板测试⭐Render Pipeline Asset 与 Universal Renderer Data⭐删除场景中的天空盒⭐设置虚拟世界的层级 Layer⭐设置模板测试 &#…