授权协议OAuth 2.0之JWT

写在前面

本文看下JWT相关内容。

1:为什么需要JWT

OAuth2.0规范中并没有规定access_token使用什么样的格式,只要求满足,不连续性,不可猜测性,不可重复性就可以了,所以我们在生成accest_token的时候就比较灵活了,比如使用uuid的方式来生成,当三方应用拿着令牌访问受保护资源服务器时,过程是这样子的:
在这里插入图片描述
此时受保护资源服务器本身无法判断令牌是否有效,所以需要通过灰色框中的令牌内检过程来验证令牌,有没有一种方式能够避免令牌内检呢?如果我们能够在保证数据安全的同时,将需要校验的信息直接封装到令牌中,似乎就可以了。而JWT就提供了这种能力,其是一种数据格式的标准,设计的核心目的就是将数据通过结构化的方式进行存储,其包括如下的几个部分:
在这里插入图片描述
三部分通过.进行分割,如下就是一个可能的jwt数据:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJYSUFPTUlOR1RFU1QiLCJhdWQiOiJBUFBJRF9SQUJCSVQiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODEvIiwiZXhwIjoxNTg0MTA1NzkwNzAzLCJpYXQiOjE1ODQxMDU5NDgzNzJ9.SoJT62wYOMihpaH3Ttxf3WYwnC6qEyKbJ-bF7jMqxL8

可以通过在线网站https://jwt.io/来看下其结构:
在这里插入图片描述
因为前2部分只是简单的base64编码,所以我们自然也能通过一般的base64工具 来查看:
在这里插入图片描述

使用了包含具体数据信息的jwt作为访问令牌之后,三方应用拿着令牌访问受保护资源服务器时,过程就变成这样子的:
在这里插入图片描述
可以看到令牌内检就不需要了。看到这里不知道你是否有这样的疑惑,如果是数据泄露了怎么办?如果是数据被篡改了怎么办?我们通过加密就可以解决泄露的风险(需要自己实现,非jwt职责范围),就算泄露了,因为解不了密所以也不用不了,通过signature就可以处理数据篡改的问题,一旦篡改,签名验证将会失败。

2:JWT的生命周期

一般jwt有如下几种生命周期:

1:从颁发到达到失效时间,自动过期失效
2:手动失效处理
3:使用刷新令牌生成新的令牌,老的令牌自动失效

3:程序测试

源码 。

生成令牌的过程参考授权协议OAuth 2.0之授权码和访问令牌 。

生成令牌之后我们通过链接http://localhost:8899/protectedresource/giveMeFengJieYanZhao?access_token=xxxx就可以来模拟访问受保护资源服务器来获取受保护资源了:
在这里插入图片描述

写在后面

参考文章列表

授权协议OAuth 2.0之授权码和访问令牌 。

多知道一点

jwt结构还挺复杂的,难道我们要自己开发程序解析?

不用,jjwt 已经帮我们干了这个事了,我们一般使用它。

三方软件需要关心令牌是普通的无结构的随机字符串或者是jwt吗?

不用,只管用就行。

header,payload只是做了base64,如何避免数据泄露呢?

需要对jwt结果整体做加密,当然这已经超出了jwt的范畴了,jwt只是解决通过结构化的方式来表示数据的问题。但额外进行加密和解密也并不是特备麻烦的事情。

jwt,jws,jwe?

jwt是一种规范,jws,jwe都是jwt的实现,我们前面分析的其实就是jws,如下图:
在这里插入图片描述

jwt:json web token,一种规范
jws:json web signature,jwt的一种实现,目前使用最多的是这一种
jwe:json web encryption,jwt的一种实现,算法比较复杂,比较难,使用的不多

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

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

相关文章

Vue 3 性能飞跃:解析其性能提升的关键方面

文章目录 响应式系统优化静态树提升diff算法优化Tree Shaking优化Composition API事件缓存机制 响应式系统优化 Vue双向绑定原理 Proxy 相较于 Object.defineProperty 在性能上的优势主要体现在以下几个方面: 属性检测的全面覆盖: Object.defineProper…

解决 windows+Ubuntu 时间不同步问题

本文所使用的 Ubuntu 系统版本是 Ubuntu 22.04 ! 如果你的电脑装了 Windows Ubuntu 系统,肯定会遇到时间不同步的问题。那么如何解决呢?参考步骤如下: # 步骤一:进入到 Ubuntu 系统# 步骤二:执行如下三条命令即可 sud…

格雷希尔G80L-T系列大口径快速连接器,在汽车膨胀水箱的气密性测试密封方案

副水箱也有人称作膨胀水箱,是汽车散热系统的一个重要组成部分,当水箱里面的温度过高的时候就会产生一定的压力,而副水箱可以根据热胀冷缩来帮助水箱和发动机排出去多余的水,起到一个调节的作用,副水箱由PP/PE塑料注塑而…

c++ CUDA求解线性方程组Ax=b

输入是三个eigen矩阵, 其中 F K x F Kx FKx, 已知 F F F和 k k k, 待求解的变量是 x x x bool linearSolverQR(Eigen::MatrixXd& m_Keig, Eigen::MatrixXd& m_xeig, Eigen::MatrixXd& m_feig) {cusolverStatus_t status;// 获取矩阵数据的指针double* k_ptr m_…

spring高级篇(一)

1、ApplicationContext与BeanFactory BeanFactory是ApplicationContext的父级接口:(citlaltu查看类关系图) 在springboot的启动类中,我们通过SpringApplication.run方法拿到的是继承了ApplicationContext的ConfigurableApplicatio…

代码随想录-算法训练营day13【栈与队列03:滑动窗口最大值、前K个高频元素、简化路径、总结】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第五章 栈与队列part03今日内容: ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总结详细布置 239. 滑动窗口最大值 (一刷至少需要理解思路)之前讲的都是栈的应用,这…

Qt使用miniblink第三方浏览器模块

文章目录 一、前言二、miniblink简介三、miniblink使用四、运行效果五、工程结构 一、前言 本文取自刘典武大师:Qt编写地图综合应用58-兼容多浏览器内核 用Qt做项目过程中,遇到需要用到浏览器控件的项目,可能都会绕不开一个问题,那…

【Web】VS Code 插件

专栏文章索引:Web 有问题可私聊:QQ:3375119339 目录 一、安装步骤 二、插件 1.Chinese (Simplified) (简体中文) 2.open in browser 3.vscode-icons 4.Live Server 5.Live Server Preview 6.翻译(英汉词典) 一、安装步骤 点击 “扩…

创纪录的里程碑!光镊阵列捕获逾6,000中性原子,量子计算再达新高

论文链接: https://arxiv.org/abs/2403.12021 2024年3月18日,研究人员成功开发出一种大规模光镊阵列,能够在12,000个位点上捕获超过6,100个中性原子,同时在几个关键性能指标上达到新的高度: 1)相干时间达到…

javascript设计模式----访问者模式

访问者模式:针对于对象结构中的元素,定义在不改变改对象的前提下访问结构中元素的新方法。 解决事件回调函数中对改元素的访问问题。 实现的核心,调用call或者apply 场景:用dom2级事件为页面中的元素绑定事件 var bindEvent = function(dom,type,fn){if(dom.addEventListe…

新零售门店、商品、会员管理指标体系总览

新零售,旨在打破传统零售业的边界,引入先进科技和数字化手段,通过整合线上线下渠道,全面提升用户体验,并实现更智能、高效、个性化的零售运营模式。这一模式不仅仅关注销售产品,更注重构建全方位的购物生态…

《中医临床诊疗术语》数据库

最新版的《中医临床诊疗术语》于2023年3月17日由国家中医药管理局提出的,由国家市场监督管理总局和国家标准化管理委员会共同发布。新版的修订是为落实相关政策文件要求,推进中医医疗服务规范化、标准化管理,提高中医医疗服务标准化水平和管理…

asyncio异步编程

参考视频:02 协程_哔哩哔哩_bilibili 1.协程:(不是计算机中真实存在的,人为创造出的概念),也可称为微线程。 本质是用一个线程在一段代码中来会切换游走的线程,是一种用户态内的上下文切换技术…

中科驭数:DPU是构建高效智算中心基础设施的必选项

4 月 15 日,在江苏省未来网络创新研究院、网络通信与安全紫金山实验室举办的“2024智算网络技术与应用创新峰会”上,中科驭数作为DPU算力基础设施领军企业,受邀出席本次峰会。中科驭数产品运营部副总经理曹辉先生在《基于DPU的高效智算中心算…

OpenCV与AI深度学习 | 2024年AI初学者需要掌握的热门技能有哪些?

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。 原文链接:2024年AI初学者需要掌握的热门技能有哪些? 0 导 读 本文主要介绍2024年AI初学者需要掌握的热门技能。 1 前 言 人工智能无疑是技…

数据分析业务——二八定律

二八定律 转载:百度百科 二八定律也叫巴莱多定律,是19世纪末20世纪初意大利经济学家巴莱多发明的。他认为,在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的&…

基于java+springboot+vue实现的智慧党建系统(文末源码+Lw+ppt)23-58

摘 要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统智慧党建管理采取了人工的管理方法,但这种管…

openGauss学习笔记-264 openGauss性能调优-TPCC性能调优测试指导-BIOS配置

文章目录 openGauss学习笔记-264 openGauss性能调优-TPCC性能调优测试指导-BIOS配置264.1 恢复BIOS出厂设置264.2 修改相关BIOS设置264.3 重启操作系统 openGauss学习笔记-264 openGauss性能调优-TPCC性能调优测试指导-BIOS配置 本章节主要介绍openGauss数据库内核基于鲲鹏服务…

repo 管理多个git仓库

当repo init时,执行的repo是环境变量里面默认的repo,这个repo只是单纯一个几百行的Python脚本 而不是完整的repo-project,所以要先去网络远端sync完整的repo-project, 因为repo也是开源项目,设计者出于维护和使用体验&…

BTI功能验证与异常解析

BTI分支目标识别精讲与实践系列 思考 1、什么是代码重用攻击?什么是ROP攻击?区别与联系? 2、什么是JOP攻击?间接分支跳转指令? 3、JOP攻击的缓解技术?控制流完整性保护? 4、BTI下的JOP如何…