授权协议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的一种实现,算法比较复杂,比较难,使用的不多

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

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

相关文章

解决:IDEA编译报错,自动切换JDK编译版本

一、IDEA切换JDK版本 要想在IDEA中完成对JDK版本的切换有多个地方需要我们进行修改 File | Settings | Build, Execution, Deployment | Compiler | Java Compiler File->ProjectStruct->platform settings->SDKS File->ProjectStruct->projectSettings->…

算法|基础算法|高精度算法

基础算法|位运算 1.高精度加法 2.高精度减法 3.高精度乘法 4.高精度除法 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 高精度加法 …

GPT-4 都已经这么强了,那未来的 GPT-5 会是什么样子?

GPT-4 可以说是再一次颠覆了我对 AI 的认知,从文本到图片视频,再到逻辑推理,简直是神进步。 GPT5上线前夕,把GPT4慢慢弄成GPT3.5的效果,把GPT3.5逐渐弄成GPT3的效果,GPT5横空出世的时候就如GPT4对GPT3.5的…

麦多馅饼创始人是谁,麦多馅饼品牌历程?

麦多馅饼的创始人是刘占华先生,他于2006年创建了吉林通化麦多食品有限公司。刘先生有着超过20年的餐饮连锁管理经验,是麦多馅饼品类的原创者。他的故事充满了奋斗和创业的精神,是中国餐饮行业的一段佳话。 品牌历程充满了刘占华先生的智慧和…

天工杂志社《天工》杂志社2024年第5期目录

业界翘楚 巍巍者昆仑 煌煌者华夏 乔彦鹏; 6-8 工美史话 日月之光照澈幽冥——墓葬铜镜中柿蒂纹意象辨析 周昕怡;刘春芽; 9-11 西藏传统手工艺技能教育发展历程研究 吕元菊; 12-14 探索研究《天工》投稿:cn7kantougao163.com 传统装饰艺术设计美学的…

如何拿捏2024年的B端设计?(附工具推荐)

伴随着2019年前的互联网人口红利时代结束,科技行业的基本面发生了巨大的变化,以普通消费者为目标的C端需求大幅萎缩,面向企业的B端需求成为行业热点。 在2024年的今天,设计师应该如何理解B端设计的实质,并真正驾驭B端产…

循环购模式:消费返利与积分新体验

大家好,我是吴军,今天我想和大家深入探讨一种别具一格且令人瞩目的商业模式——循环购模式。这一模式巧妙地将消费返利与积分机制相融合,为商家和消费者之间搭建了一座崭新的互动桥梁。 在循环购模式的运作下,消费者的每一次购买行…

基于springboot+vue+Mysql的地方废物回收机构管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

如何下载省,市,区县行政区Shp数据

摘要:一般非专业的GIS应用通常会用到省市等行政区区划边界空间数据做分析,本文简单介绍了如何在互联网上下载省,市,区县的shp格式空间边界数据,并介绍了一个好用的在线数据转换工具,并且开源。 目录 一、下…

AI智能分析网关V4平台告警数据清理方法:自动清理与手动清理

TSINGSEE青犀智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备,目前拥有3种型号(8路/16路/32路),支持Caffe/DarkNet/TensorFlow/PyTorch/MXNet/ONNX/PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型…

手机抓包fiddler配置及使用教程

本文基于Fiddler4讲解基本使用 fiddler抓包原理 注意:Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的 程序。不过如果Fiddler非正常退出&…

浅谈Java NIO

Java NIO(New Input/Output)是Java平台上一种全新的IO API,相较于传统的Java I/O(也称为BIO,阻塞I/O),NIO引入了非阻塞I/O和通道(Channel)的概念,以及缓冲区&…

力扣:49. 字母异位词分组

知识点: 散列函数 散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位: 1. 直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)key或H&a…

企业如何上百度百科

企业想要上百度百科,首先需要创建属于自己的词条。创建企业百度百科词条的步骤如下: 企业认证:企业需要提供营业执照等证明材料,以证明其合法性。此外,企业营业执照的注册时间必须满一年及以上,且在近一年内没有因为经…

如何在CentOS安装Firefox并结合内网穿透工具实现公网访问本地火狐浏览器

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

(Talk-Bot,ichat助手,ChatK,DGAL,NextChat,FreeGPT,动点原版chatgpt)分享7个好用ChatGPT

目录 目录 1、Talk-Bot 2、ichat助手 3、ChatK 4、DGAI 5、NextChat 6、Chkzh-Aink 7、FreeGPT | dongstop.vip 8、动点原版chatgpt 1、Talk-Bot https://vip.gptchatclub.org/?fromweb 2、ichat助手 https://chat.letdata.net/ichat/59w2x4n3pow https://ichat2019.com/ichat…

1231: 寻找出现次数最多的数

解法&#xff1a; #include<iostream> #include<algorithm> #include<vector> #include<unordered_map> #include<utility> using namespace std; int main() {int n, a;cin >> n;unordered_map<int, int> mp;while (n--) {cin >…

【Web】VS Code 插件

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

Navicat 干货 | 了解 PostgreSQL 规则

PostgreSQL 是一个强大的开源关系型数据库管理系统&#xff0c;为增强数据管理和操作提供了丰富的功能。这些功能中包含了规则&#xff0c;这是一种用于控制数据库内部查询和命令处理方式的机制。本文将探讨 PostgreSQL 规则的工作原理&#xff0c;以及它们与触发器的区别&…

中东跨境电商平台Noon注册开店步骤详解

中东地区&#xff0c;素以“满地富豪”闻名&#xff0c;同时拥有发达的电子商务环境与较高的居民消费水平&#xff0c;吸引了大量跨境电商从业者前来寻求商机。其中&#xff0c;Noon作为中东地区颇具人气的电商平台&#xff0c;自然而然成为了众多卖家开拓中东市场的首选平台。…