当前位置: 首页 > news >正文

JWT原理及工作流程详解

JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在各方之间安全传输信息。其核心原理是通过结构化、签名或加密的JSON对象实现无状态身份验证和授权。以下是JWT的工作原理和关键组成部分:

1. JWT结构

JWT由三部分组成,用点号(.)分隔:

复制

下载

Header.Payload.Signature

例如:xxxxx.yyyyy.zzzzz

(1) 头部(Header)
  • 作用:声明令牌类型(typ: "JWT")和签名算法(如HS256RS256)。

  • 编码方式:Base64Url编码。

  • 示例:

    json

    {"alg": "HS256","typ": "JWT"
    }
(2) 载荷(Payload)
  • 作用:携带用户身份和权限信息(称为“声明”)。

  • 声明类型

    • 注册声明(预定义,如iss签发者、exp过期时间、sub主题)。

    • 公共声明(自定义,需避免冲突)。

    • 私有声明(双方协商的声明)。

  • 编码方式:Base64Url编码。

  • 示例:

    json

    {"sub": "1234567890","name": "John Doe","admin": true,"exp": 1622544000
    }
(3) 签名(Signature)
  • 作用:验证令牌完整性和真实性,防止篡改。

  • 生成方式:将编码后的Header和Payload用.连接,使用密钥和指定算法签名。

  • 示例(HMAC SHA256算法):

    HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secretKey
    )

2. JWT工作流程

  1. 用户登录:客户端发送凭证(如用户名/密码)到认证服务器。

  2. 生成JWT:服务器验证凭证,生成JWT并返回给客户端。

  3. 客户端存储:客户端保存JWT(通常为LocalStorage或Cookie)。

  4. 携带JWT请求:客户端在后续请求的Authorization头中携带JWT(如Bearer <token>)。

  5. 服务端验证

    • 拆分JWT,验证签名有效性(使用相同密钥和算法重新计算签名)。

    • 检查声明(如exp是否过期、用户权限等)。

    • 验证通过后,处理请求。


3. 核心特点

  • 无状态:服务端无需存储会话信息,适合分布式系统。

  • 自包含:所有必要信息都包含在令牌中。

  • 安全性:通过签名防止篡改,但需结合HTTPS防止窃听。

  • 灵活性:支持对称(HMAC)和非对称(RSA)加密算法。


4. 注意事项

  • 敏感信息:载荷仅Base64编码(非加密),避免存储密码等敏感数据。

  • 密钥管理:密钥泄露会导致令牌伪造,需严格保护。

  • 令牌有效期:设置合理过期时间(exp),缩短被窃取后的风险窗口。

  • 废止机制:JWT无法直接废止,需借助黑名单或短期有效期。


5. 适用场景

  • 跨域认证(如单点登录SSO)。

  • API无状态身份验证。

  • 客户端与微服务间的安全通信。


通过上述机制,JWT实现了高效、安全的身份验证,但需结合实际需求权衡其无状态特性和潜在的安全风险。

相关文章:

JWT原理及工作流程详解

JSON Web Token&#xff08;JWT&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间安全传输信息。其核心原理是通过结构化、签名或加密的JSON对象实现无状态身份验证和授权。以下是JWT的工作原理和关键组成部分&#xff1a; 1. JWT结构 J…...

广西某建筑用花岗岩矿自动化监测

1. 项目简介 某矿业有限公司成立于2021年&#xff0c;是由某建筑材料有限公司与个人共同出资成立&#xff0c;矿区面积0.4069平方公里&#xff0c;可开采筑用花岗岩、建筑用砂岩。建筑用花岗岩、建筑用砂岩可利用资源量分别为6338.69万吨、303.39万吨&#xff0c;设计生产规模…...

100个思维模型系列更新完毕!

giszz的粉丝们&#xff0c;到今天为止&#xff0c;思维模型专栏已经更新了100期&#xff0c;正式告一段落了。 以下是为你列出的100个思维模型名字&#xff08;部分思维模型可能存在多种表述方式&#xff0c;但核心概念一致&#xff0c;这里尽量涵盖不同领域常见的思维模型&am…...

Bitcoin跨链协议Clementine的技术解析:重构DeFi生态的信任边界

2025年5月2日&#xff0c;比特币Rollup项目Citrea在测试网正式推出跨链协议Clementine&#xff0c;其基于BitVM2编程语言构建的信任最小化桥接技术&#xff0c;被视为解决比特币与DeFi生态融合难题的关键突破。本文从技术背景、核心机制、安全模型、应用场景四大维度&#xff0…...

北斗导航 | RTKLib中重难点技术,公式,代码

Rtklib 一、抗差自适应卡尔曼滤波1. **核心难点**2. **公式与代码实现**二、模糊度固定与LAMBDA算法1. **核心难点**2. **LAMBDA算法实现**3. **部分模糊度固定技术**三、伪距单点定位与误差修正1. **多系统多频点修正**2. **接收机钟差与系统间偏差**四、动态模型与周跳处理1.…...

C++学习之类和对象_1

1. 面向过程与面向对象 C语言是面向过程的&#xff0c;注重过程&#xff0c;通过调用函数解决问题。 比如做番茄炒蛋&#xff1a;买番茄和鸡蛋->洗番茄和打鸡蛋->先炒蛋->把蛋放碟子上->炒番茄->再把蛋倒回锅里->加调料->出锅 而C是面向对象的&#xff…...

Oracle OCP认证考试考点详解083系列14

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 66. 第66题&#xff1a; 题目 解析及答案&#xff1a; 当一个非常大的数据文件被划分为四个部分进行 RMAN 多区段备份时&#xff0c;以下…...

华为欧拉(EulerOS)系统全栈软件部署指南:从 Redis 到 MySQL 实战详解

前言 在国产化操作系统蓬勃发展的背景下&#xff0c;华为欧拉&#xff08;EulerOS&#xff09;凭借其稳定性与安全性&#xff0c;成为企业级服务器部署的重要选择。本文基于官方技术文档与最佳实践&#xff0c;详细梳理 Redis 集群、RabbitMQ、JDK、Tomcat 及 MySQL 在欧拉系统…...

YOLO使用CableInspect-AD数据集实现输电线路缺陷检测

输电线路缺陷检测是一个关键的任务&#xff0c;旨在确保电力传输系统的可靠性和安全性。今天我们使用CableInspect-AD数据集进行训练完成缺陷检测&#xff0c;下载的数据集格式如下&#xff1a; 我们需要经过以下步骤&#xff1a; COCO转YOLO 首先是将COCO格式的数据转换为YO…...

全国青少年信息素养大赛 Python编程挑战赛初赛 内部集训模拟试卷五及详细答案解析

博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解...

三个线程 a、b、c 并发运行,b,c 需要 a 线程的数据如何解决

说明&#xff1a; 开发中经常会碰到线程并发&#xff0c;但是后续线程需要等待第一个线程执行完返回结果后&#xff0c;才能再执行后面线程。 如何处理呢&#xff0c;今天就介绍两种方法 1、使用Java自有的API即CountDownLatch&#xff0c;进行实现 思考&#xff1a;CountDown…...

python实现点餐系统

使用python实现点餐系统的增加菜品及价格&#xff0c;删除菜品&#xff0c;查询菜单&#xff0c;点菜以及会员折扣价等功能。 代码&#xff1a; 下面展示一些 内联代码片。 # coding utf-8menu {拍黄瓜: 6, 小炒肉: 28, 西红柿炒蛋: 18, 烤鱼: 30, 红烧肉: 38, 手撕鸡: 45,…...

力扣26——删除有序数组中的重复项

目录 1.题目描述&#xff1a; 2.算法分析&#xff1a; 3.代码展示&#xff1a; 1.题目描述&#xff1a; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对…...

A2A与MCP定义下,User,Agent,api(tool)间的交互流程图

官方图&#xff1a; 流程图&#xff1a; #mermaid-svg-2smjE8VYydjtLH0p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2smjE8VYydjtLH0p .error-icon{fill:#552222;}#mermaid-svg-2smjE8VYydjtLH0p .error-tex…...

【大模型面试每日一题】Day 13:数据并行与模型并行的区别是什么?ZeRO优化器如何结合二者?

【大模型面试每日一题】Day 13&#xff1a;数据并行与模型并行的区别是什么&#xff1f;ZeRO优化器如何结合二者&#xff1f; &#x1f4cc; 题目重现 &#x1f31f;&#x1f31f; 面试官&#xff1a;数据并行与模型并行的区别是什么&#xff1f;ZeRO优化器如何结合二者&…...

各种注解含义及使用

RestController RestController注解 是Spring 4.0引入的一个组合注解&#xff0c;用于简化RESTful Web服务的开发。 RestController注解 相当于 Controller 和 ResponseBody 注解的组合&#xff0c;表示该类是一个控制器&#xff0c;并且所有的方法返回值都将直接写入HTTP响应体…...

amass:深入攻击面映射和资产发现工具!全参数详细教程!Kali Linux教程!

简介 OWASP Amass 项目使用开源信息收集和主动侦察技术执行攻击面网络映射和外部资产发现。 此软件包包含一个工具&#xff0c;可帮助信息安全专业人员使用开源信息收集和主动侦察技术执行攻击面网络映射并执行外部资产发现。 使用的信息收集技术 技术数据来源APIs&#xf…...

xxl-job简单入门使用教程

1、从git中拉取xxl-job代码 https://gitee.com/xuxueli0323/xxl-job HTTPS&#xff1a;git clone https://gitee.com/xuxueli0323/xxl-job.git SSH&#xff1a;git clone gitgitee.com:xuxueli0323/xxl-job.git 拉取本地后&#xff0c;使用Idea打开项目&#xff0c;当前使用…...

设置GO程序在离线情况下读取本地缓存的模块

在 Go 中&#xff0c;GOPROXY 环境变量用于指定模块代理服务器的地址。如果你想让 GOPROXY 读取本地的模块&#xff0c;可以通过以下几种方式实现&#xff1a; 1. 使用本地代理服务器 你可以搭建一个本地的 Go 模块代理服务器&#xff0c;将需要的模块代码推送到代理服务器中…...

Python 爬虫基础入门教程(超详细)

一、什么是爬虫&#xff1f; 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称网页蜘蛛&#xff0c;是一种自动抓取互联网信息的程序。爬虫会模拟人的浏览行为&#xff0c;向网站发送请求&#xff0c;然后获取网页内容并提取有用的数据。 二、Python爬虫的基本原…...

C语言实现三子棋

目录 1.通过模块化来实现三子棋 2.三子棋代码基本逻辑 3.代码的书写 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; gane.h gane.c main.c 第五步&#xff1a; game.h game.c main.c 第六步&#xff1a; game.h game.c main…...

SCDN是什么?

SCDN是安全内容分发网络的简称&#xff0c;它在传统内容分发网络&#xff08;CDN&#xff09;的基础上&#xff0c;集成了安全防护能力&#xff0c;旨在同时提升内容传输速度和网络安全性。 SCDN的核心功能有&#xff1a; DDoS防御&#xff1a;识别并抵御大规模分布式拒绝服务…...

Transformer编码器+SHAP分析,模型可解释创新表达!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基本介绍 基于SHAP分析的特征选择和贡献度计算&#xff0c;Matlab2023b代码实现&#xff1b;基于MATLAB的SHAP可解释Transformer编码器回归模型&#xff0c;敏感性分析方法。 详细介绍 引言 在正向渗透&#xff08…...

机器学习第三讲:监督学习 → 带答案的学习册,如预测房价时需要历史价格数据

机器学习第三讲&#xff1a;监督学习 → 带答案的学习册&#xff0c;如预测房价时需要历史价格数据 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1…...

【TACD模拟】质子辐照对GaN器件临界电压增加的影响机制

2013 年,佛罗里达大学的 Erin Patrick 等人基于 TRIM 和 FLOODS 模型,研究了质子辐照对 AlGaN/GaN HEMTs 的影响。研究背景方面,AlGaN/GaN HEMTs 因其宽禁带、高击穿场、高电子迁移率以及优秀的热管理能力,在商业和军事领域应用前景广阔,但长期可靠性仍是问题,尤其是栅极…...

VBA高级应用30例应用4:利用屏蔽事件来阻止自动运行事件

《VBA高级应用30例》&#xff08;版权10178985&#xff09;&#xff0c;是我推出的第十套教程&#xff0c;教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开&#xff0c;这套教程案例与理论结合&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以…...

基于SSM实现的健身房系统功能实现八

一、前言介绍&#xff1a; 1.1 项目摘要 随着社会的快速发展和人们健康意识的不断提升&#xff0c;健身行业也在迅速扩展。越来越多的人加入到健身行列&#xff0c;健身房的数量也在不断增加。这种趋势使得健身房的管理变得越来越复杂&#xff0c;传统的手工或部分自动化的管…...

Java设计模式之原型模式详解:从入门到精通

1. 原型模式概述 1.1 定义与核心概念 **原型模式(Prototype Pattern)**是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过new关键字实例化。这种模式特别适用于创建成本较高的对象。 专业术语解释表: 术语解释原型(Prototype)被复制的原始对象克隆(Clone)…...

鞋样设计软件

Sxy 64鞋样设计软件是一款专业级鞋类设计工具 专为鞋业设计师与制鞋企业开发 该软件提供全面的鞋样设计功能 包括二维开版 三维建模 放码排料等核心模块 支持从草图构思到成品输出的完整设计流程 内置丰富的鞋型数据库与部件库 可快速生成各种鞋款模板 软件采用智能放码技术 精…...

移动IP与手机移动数据流量的概念、原理、区别与联系

移动IP与手机移动数据流量的概念、原理、区别与联系 文章目录 移动IP与手机移动数据流量的概念、原理、区别与联系一、概念与原理二、核心区别三、联系与协作四、技术挑战与发展趋势五、总结 一、概念与原理 移动IP 定义&#xff1a;移动IP是一种网络层协议&#xff0c;允许设…...

Spring中除DI之外获取 BEAN 的方式​

前言 在 Spring 框架的开发实践中&#xff0c;获取 Bean 是极为重要的基础操作。我们熟知通过依赖注入能便捷地获取 Bean&#xff0c;不过在许多场景下&#xff0c;还需要借助其他方式来获取 Bean。本文将深入探讨在 Spring 中除了依赖注入之外获取 Bean 的多种方式&#xff0c…...

屎上雕花系列-2nd

以下为“屎上雕花”的尝试2nd 使用Deepseek扩容而来&#xff0c;我竟然没有找到明显的错误&#xff0c;太强大了&#xff0c;工作改变生活了 LeCroy 以太网与 SAN 网络测试解决方案 硬件平台一&#xff1a;Xena 以太网流量生成器 Xena 以太网流量生成器是一款高性能的网络测…...

第十五章,SSL VPN

前言 IPSec 和 SSL 对比 IPSec远程接入场景---client提前安装软件&#xff0c;存在一定的兼容性问题 IPSec协议只能够对感兴趣的流量进行加密保护&#xff0c;意味着接入用户需要不停的调整策略&#xff0c;来适应IPSec隧道 IPSec协议对用户访问权限颗粒度划分的不够详细&…...

第四天 从CAN总线到Spark/Flink实时处理

前言 在智能网联汽车快速发展的今天&#xff0c;每辆汽车每天产生的数据量高达数GB。这些数据蕴藏着驾驶行为、车辆健康、道路状况等宝贵信息。本文将带您从零开始&#xff0c;系统学习车辆数据采集与分析的全流程技术体系&#xff0c;包含&#xff1a; CAN总线数据解析与采集…...

pandas中的数据聚合函数:`pivot_table` 和 `groupby`有啥不同?

pivot_table 和 groupby 是 pandas 中两种常用的数据聚合方法&#xff0c;它们都能实现数据分组和汇总&#xff0c;但在使用方式和输出结构上有显著区别。 0. 基本介绍 groupby分组聚合 groupby 是 Pandas 库中的一个功能强大的方法&#xff0c;用于根据一个或多个列对数据进…...

AI客服问答自动生成文章(基于deepseek实现)

小编一直在用AI做网站平台文章的润色或者二创。一直有一个想法&#xff0c;在自己网站加一个AI智能客服&#xff0c;通过文心或者deepseek来智能回答网友提出的问题&#xff0c;这样就能减少很多人工回复的麻烦&#xff0c;提高互动效率。 开发背景 其实很多网友提出的问题非…...

镜头内常见的马达类型(私人笔记)

① 螺杆式马达 驱动来源&#xff1a;机身内马达。镜头尾部有一个接收“螺杆”的接口&#xff0c;通过机械传动带动镜头对焦组。缺点&#xff1a;慢、吵、不能用于无机身马达的相机。✅ 典型镜头&#xff1a;尼康 AF、AF-D 系列&#xff1b;美能达老镜头。尼康传统的AF镜头通过…...

从 JMS 到 ActiveMQ:API 设计与扩展机制分析(一)

引言 在当今的分布式系统开发中&#xff0c;消息中间件扮演着举足轻重的角色&#xff0c;它为应用程序之间提供了可靠的异步通信机制。JMS&#xff08;Java Message Service&#xff09;作为 Java 平台上的消息服务规范&#xff0c;定义了一套通用的 API&#xff0c;使得开发者…...

第J7周:ResNeXt解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: Tensorflow &#xff08;二&#xff09;具体…...

机器学习-无量纲化与特征降维(一)

一.无量纲化-预处理 无量纲&#xff0c;即没有单位的数据 无量纲化包括"归一化"和"标准化"&#xff0c;这样做有什么用呢&#xff1f;假设用欧式距离计算一个公司员工之间的差距&#xff0c;有身高&#xff08;m&#xff09;、体重&#xff08;kg&#x…...

Shiro(八):JWT介绍

1、什么是JWT&#xff1f; JWT&#xff08;JSON Web Token&#xff0c;JSON Web令牌&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络应 用环境间安全地传递声明&#xff08;claims&#xff09;作为JSON对象&#xff1b;JWT会按指定的加密算…...

linux0.11内核源码修仙传第十六章——获取硬盘信息

&#x1f680; 前言 书接第十四章&#xff1a;linux0.11内核源码修仙传第十四章——进程调度之fork函数&#xff0c;在这一节博客中已经通过fork进程创建了一个新的进程1&#xff0c;并且可以被调度&#xff0c;接下来接着主线继续走下去。希望各位给个三连&#xff0c;拜托啦&…...

画家沈燕的山水实验:在传统皴法里植入时代密码

导语&#xff1a;当宋代山水遇上AI算法&#xff0c;当青绿颜料邂逅生态数据&#xff0c;沈燕在宣纸与人工智能的交界处&#xff0c;开启了一场关于水墨基因的“基因突变”实验。她的画笔既似考古学家的洛阳铲&#xff0c;又似未来学家的扫描仪&#xff0c;在古今对话中重构山水…...

聊聊四种实时通信技术:短轮询、长轮询、WebSocket 和 SSE

这篇文章&#xff0c;我们聊聊 四种实时通信技术&#xff1a;短轮询、长轮询、WebSocket 和 SSE 。 1 短轮询 浏览器 定时&#xff08;如每秒&#xff09;向服务器发送 HTTP 请求&#xff0c;服务器立即返回当前数据&#xff08;无论是否有更新&#xff09;。 优点&#xff1…...

国联股份卫多多与北京经纬智诚签署战略合作协议

5月9日&#xff0c;北京经纬智诚电子商务有限公司&#xff08;以下简称“经纬智诚”&#xff09;总经理王学文一行到访国联股份卫多多&#xff0c;同卫多多/纸多多副总裁、产发部总经理段任飞&#xff0c;卫多多机器人产业链总经理郭碧波展开深入交流&#xff0c;双方就未来合作…...

在 Envoy 的配置文件中出现的 “@type“ 字段

在 Envoy 的配置文件中出现的 "type" 字段是 Protocol Buffers&#xff08;Protobuf&#xff09;的 JSON/YAML 编码规范的一部分&#xff0c;属于 Typed Struct 的表示方式。它的作用是明确指定当前配置对象的 Protobuf 类型&#xff0c;以便 Envoy 正确解析配置。以…...

编译原理实验 之 语法分析程序自动生成工具Yacc实验

文章目录 实验环境准备复现实验例子分析总的文件架构实验任务 什么是Yacc Yacc(Yet Another Compiler Compiler)是一个语法分析程序自动生成工具&#xff0c;Yacc实验通常是在编译原理相关课程中进行的实践项目&#xff0c;旨在让学生深入理解编译器的语法分析阶段以及掌握Yac…...

【大模型】LLM概念相关问题(上)

1.主流的大语言模型 截至2025年&#xff0c;主流的大型语言模型&#xff08;LLM&#xff09;体系涵盖了多个国家和机构的成果&#xff0c;具有多样的架构设计、参数规模和应用场景。以下是一些具有代表性的开源和闭源 LLM 体系&#xff1a; &#x1f1fa;&#x1f1f8; OpenA…...

AWS IoT Core与MSK集成实战:打造高可靠实时IoT数据管道

在物联网快速发展的今天,如何高效、安全地处理海量设备数据成为企业面临的一大挑战。本文将带您深入探索AWS IoT Core与Amazon MSK(Managed Streaming for Apache Kafka)的集成方案,手把手教您搭建一个可靠、可扩展的实时IoT数据处理管道。无论您是IoT开发者、大数据工程师还是…...

智慧交通-车门开关状态检测数据集VOC+YOLO格式1006张2类

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1006 标注数量(xml文件个数)&#xff1a;1006 标注数量(txt文件个数)&#xff1a;1006 …...