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

Token和JWT的关系详细讲解

Token 和 JSON Web Token (JWT) 是两个相关但概念上不同的术语,它们在现代 Web 应用程序的身份验证和授权中扮演着重要角色。下面将详细介绍两者之间的关系以及 JWT 的具体工作原理。

1. Token 概述

Token 是一种广义的概念,指的是任何可以证明用户身份或权限的令牌。它可以是任何形式的数据结构,只要能够被服务器识别并验证即可。常见的 Token 类型包括:

  • Session Tokens:通常存储在服务器端会话中,客户端每次请求时携带一个 Session ID。
  • OAuth Tokens:用于第三方登录和 API 访问控制。
  • JSON Web Tokens (JWT):一种自包含的、基于标准的 Token 格式,广泛应用于无状态认证机制。

2. JWT 详解

2.1 定义

JSON Web Token (JWT) 是一种开放标准 (RFC 7519),定义了一种紧凑且自包含的方式用于在网络应用环境间安全地传输信息。这些信息经过数字签名(使用 HMAC 算法或 RSA 公私钥对)以确保其完整性和不可篡改性。

2.2 结构

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

  • Header:头部包含了令牌的类型(通常是 JWT)和所使用的签名算法(如 HMAC SHA256 或 RSA)。例如:

    {"alg": "HS256","typ": "JWT"
    }
  • Payload(也称为 Claims):载荷部分包含了声明,即要传达的信息。声明分为三种类型:

    • Registered claims:预定义的标准字段,如 iss (issuer), exp (expiration time), sub (subject) 等。
    • Public claims:可以自定义的公开字段,但为了避免冲突应先注册到 IANA 或采用 URL 命名空间。
    • Private claims:应用程序内部使用的私有字段。

    示例 Payload:

    {"sub": "1234567890","name": "John Doe","admin": true,"iat": 1516239022
    }
  • Signature:签名是用来验证消息是否来自可信任的一方,并保证数据没有被篡改。它通过对 Header 和 Payload 进行 Base64Url 编码后,再与密钥一起通过指定的算法计算得出。例如:

    HMACSHA256(base64UrlEncode(header) + "." +base64UrlEncode(payload),your-256-bit-secret
    )

最终生成的 JWT 可能看起来像这样:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
2.3 工作流程
  1. 登录:当用户成功登录后,服务器会创建一个 JWT 并将其返回给客户端。
  2. 存储:客户端收到 JWT 后,通常会保存在本地存储、cookie 或内存中。
  3. 发送请求:每当客户端向受保护的资源发起请求时,都会在 HTTP 请求头中的 Authorization 字段附加 Bearer Token 形式的 JWT。
  4. 验证:服务器接收到带有 JWT 的请求后,解析并验证该 Token。如果有效,则处理请求;否则拒绝访问。
2.4 优点
  • 无状态:因为所有必要的信息都包含在 JWT 内部,所以服务器不需要存储会话信息,这使得 JWT 非常适合分布式系统。
  • 跨域支持:由于 JWT 是字符串形式,因此很容易跨越不同域名进行传递。
  • 安全性:通过加密签名,确保了 JWT 的完整性和真实性。
2.5 缺点
  • 大小问题:相比于 session id,JWT 本身较大,尤其是在包含大量 claim 的时候,可能会增加网络流量。
  • 过期管理:一旦签发,除非设置过期时间 (exp),否则无法主动使 JWT 失效。对于某些场景可能需要额外的逻辑来处理 token 的刷新或撤销。
  • 隐私风险:虽然 JWT 内容是经过编码而非加密,但如果不小心泄露,任何人都可以读取其中的信息。因此敏感数据不应放在 payload 中。

3. Token 与 JWT 的关系

  • JWT 是一种特定类型的 Token:JWT 符合 Token 的定义,但它遵循 RFC 7519 规范,具有标准化的格式和特性。
  • 用途重叠:JWT 和其他类型的 Token 都可以用来实现身份验证和授权,但在无状态架构和服务端无须维护会话状态的情况下,JWT 更加适用。
  • 互操作性强:由于其标准化格式,JWT 在不同平台和技术栈之间更容易共享和解析。

总结

Token 和 JWT 是紧密相连却又各自独立的概念。理解这两者之间的区别有助于选择最适合项目需求的身份验证方案。JWT 作为一种轻量级、安全且易于使用的 Token 实现方式,在当今的 Web 开发中得到了广泛应用。

相关文章:

Token和JWT的关系详细讲解

Token 和 JSON Web Token (JWT) 是两个相关但概念上不同的术语,它们在现代 Web 应用程序的身份验证和授权中扮演着重要角色。下面将详细介绍两者之间的关系以及 JWT 的具体工作原理。 1. Token 概述 Token 是一种广义的概念,指的是任何可以证明用户身份…...

【Linux系列】Curl 参数详解与实践应用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

解决 Git SSL 连接错误:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno

问题描述 在执行 git pull 命令时遇到以下错误: > git pull --tags origin main fatal: unable to access github仓库: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0这个错误通常表示 Git 在尝试通过 HTTPS 连接到 GitHub 时遇到了 SSL 连接问题。 解决方案…...

《Vue3 八》<script setup> 语法

<script setup> 是在单文件中使用 Composition API 的编译时语法糖&#xff0c;里面的代码会被编译成组件 setup() 函数的内容。 <script setup> 中的代码在每次组件实例被创建的时候都都会被执行。 定义数据&#xff1a; 在 <script setup> 语法糖的写法中…...

51单片机和STM32集成蓝牙模块实用指南

51单片机和STM32集成蓝牙模块实用指南 蓝牙模块&#xff08;如HC-05、HC-06、JDY-31等&#xff09;是嵌入式开发中常用的无线通信模块&#xff0c;广泛应用于智能家居、物联网、机器人等领域。本文将详细介绍如何将蓝牙模块集成到 51单片机 和 STM32 中&#xff0c;并提供一个…...

Transformer:深度学习的变革力量

深度学习领域的发展日新月异&#xff0c;在自然语言处理&#xff08;NLP&#xff09;、计算机视觉等领域取得了巨大突破。然而&#xff0c;早期的循环神经网络&#xff08;RNN&#xff09;在处理长序列时面临着梯度消失、并行计算能力不足等瓶颈。而 Transformer 的横空出世&am…...

sql 函数

# 四则运算 - * / # 函数 distinct 、count、sum、max、min、avg、sum、round select concat(device_id 是,device_id ) device_id from device_id_apply_factor where device_id D6A42CE6A0; select concat_ws(|||,device_id ,factor_a ,module_type) from 、device_id_app…...

C# OpenCV机器视觉:OCR产品序列号识别

在一个看似平常却又暗藏玄机的工作日&#xff0c;阿明正坐在办公室里&#xff0c;对着堆积如山的文件唉声叹气。突然&#xff0c;电话铃声如炸雷般响起&#xff0c;吓得他差点从椅子上摔下来。原来是公司老板打来的紧急电话&#xff1a;“阿明啊&#xff0c;咱们刚生产出来的那…...

2012wtl,学习活扩

原文 WTL学习注意–活扩 在Win32下,活扩控件已是个成熟的概念了,即使对COM不太了解,使用活扩控件仍是件容易的事情.既然是控件,无非要关注两个方面,第一是如何调用它的函数,其次是如何接收它的事件. 看看在WTL中,如何使用活扩控件(基本对话框): 1.创建项目时,让对话框支持活…...

使用Deepseek搭建类Cursor编辑器

使用Deepseek搭建类Cursor编辑器 Cursor想必大家都用过了&#xff0c;一个非常强大的AI编辑器&#xff0c;在代码编写上为我们省了不少事&#xff0c;但高昂的价格让我们望而却步&#xff0c;这篇文章教你在Visual Studio Code上搭建一个类Cursor的代码编辑器。 步骤其实非常…...

mysql,PostgreSQL,Oracle数据库sql的细微差异(2) [whith as; group by; 日期引用]

sql示例(MySQL) WITHtemp1 AS (SELECT name AS resultsFROM Users uJOIN MovieRating m ON u.user_id m.user_idGROUP BY m.user_idORDER BY COUNT(*) DESC,left(name,1)LIMIT 1),temp2 AS (SELECT title AS resultsFROM Movies mJOIN MovieRating r ON m.movie_id r.movie_…...

基于改进粒子群优化的无人机最优能耗路径规划

目录 1. Introduction2. Preliminaries2.1. Particle Swarm Optimization Algorithm2.2. Deep Deterministic Policy Gradient2.3. Calculation of the Total Output Power of the Quadcopter Battery 3.OptimalEnergyConsumptionPathPlanningBasedonPSO-DDPG3.1.ProblemModell…...

C#中通道(Channels)的应用之(生产者-消费者模式)

一.生产者-消费者模式概述 生产者-消费者模式是一种经典的设计模式&#xff0c;它将数据的生成&#xff08;生产者&#xff09;和处理&#xff08;消费者&#xff09;分离到不同的模块或线程中。这种模式的核心在于一个共享的缓冲区&#xff0c;生产者将数据放入缓冲区&#x…...

git: hint:use --reapply-cherry-picks to include skipped commits

问&#xff1a; 当我在feture分支写完功能&#xff0c;切换到dev更新了远端dev代码&#xff0c;切回feture分支&#xff0c;git rebase dev分支后出现报错&#xff1a; warning skipped previously applied commit 709xxxx hint:use --reapply-cherry-picks to include skippe…...

AI:对比ChatGPT这类聊天机器人,人形机器人对人类有哪些不一样的影响?

人形机器人与像ChatGPT这样的聊天机器人相比&#xff0c;虽然都属于人工智能技术的应用&#xff0c;但由于其具备的物理形态和与环境的互动能力&#xff0c;它们对人类的影响会有很大的不同。下面从多个角度进行对比&#xff0c;阐述它们各自对人类的不同影响&#xff1a; 1. …...

vue3 +ts 学习记录

1 父子传参 父传子 父组件 <TestFuzichuancan :title"title"/> const title 父组件标题子组件 import { defineProps } from vue; interface Props {title?: string,arr: number[]; } const props withDefaults(defineProps<Props>(), {title: 默认…...

微服务的配置共享

1.什么是微服务的配置共享 微服务架构中&#xff0c;配置共享是一个重要环节&#xff0c;它有助于提升服务间的协同效率和数据一致性。以下是对微服务配置共享的详细阐述&#xff1a; 1.1.配置共享的概念 配置共享是指在微服务架构中&#xff0c;将某些通用或全局的配置信息…...

Scala分布式语言二(基础功能搭建、面向对象基础、面向对象高级、异常、集合)

章节3基础功能搭建 46.函数作为值三 package cn . itbaizhan . chapter03 // 函数作为值&#xff0c;函数也是个对象 object FunctionToTypeValue { def main ( args : Array [ String ]): Unit { //Student stu new Student() /*val a ()>{"GTJin"…...

Chromium 132 编译指南 Windows 篇 - 配置核心环境变量 (三)

1. 引言 在之前的 Chromium 编译指南系列文章中&#xff0c;我们已经完成了编译前的准备工作以及 depot_tools 工具的安装与配置。本篇我们将聚焦于 Chromium 编译过程中至关重要的环境变量设置&#xff0c;这些配置是您顺利进行 Chromium 构建的基石。 2. 启用本地编译&…...

开源文件存储分享平台Seafile部署与应用

Seafile 是一款开源的企业云盘,注重可靠性和性能,支持全平台客户端。Seafile 内置协同文档 SeaDoc ,让协作撰写、管理和发布文档更便捷。适用于团队协作、文件存储和同步的开源解决方案,它提供了可靠、安全和易用的云存储服务。主要有以下特点: 文件存储和同步:Seafile 允…...

MouseClick:让重复点击成为过去的智能鼠标自动化工具

MouseClick&#xff1a;让重复点击成为过去的智能鼠标自动化工具 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#xff0c;操…...

高性能Python爬虫数据预处理流水线:PyTorch 2.8与Dask并行计算实战

高性能Python爬虫数据预处理流水线&#xff1a;PyTorch 2.8与Dask并行计算实战 1. 爬虫数据处理的现实挑战 每天都有海量数据从互联网上被爬取下来&#xff0c;但很少有人告诉你这些原始数据有多"脏"。我曾经接手过一个电商评论分析项目&#xff0c;原始数据里混杂…...

DeerFlow部署全攻略:简单几步,打造你的专属AI研究工作站

DeerFlow部署全攻略&#xff1a;简单几步&#xff0c;打造你的专属AI研究工作站 1. 引言&#xff1a;你的个人深度研究助理来了 想象一下&#xff0c;你正在为一个复杂的项目做调研&#xff0c;需要收集资料、分析数据、撰写报告&#xff0c;甚至还要制作演示文稿。传统的方式…...

Step3-VL-10B效果展示:10B轻量级模型实现媲美大模型的视觉语言推理能力

Step3-VL-10B效果展示&#xff1a;10B轻量级模型实现媲美大模型的视觉语言推理能力 1. 引言&#xff1a;当“小个子”拥有了“大智慧” 想象一下&#xff0c;你面前有一张复杂的科学图表、一份手写的数学笔记&#xff0c;或者一个满是按钮的软件界面。你能看懂多少&#xff1…...

从零搭建一个‘智能’前端项目:手把手整合Vite5、微前端和AI代码提示(2025工程化实战)

从零搭建一个‘智能’前端项目&#xff1a;手把手整合Vite5、微前端和AI代码提示&#xff08;2025工程化实战&#xff09; 在当今快速迭代的前端领域&#xff0c;掌握工程化能力已成为开发者从初级迈向中高级的关键门槛。本文将带你从零开始构建一个融合最新技术栈的智能前端项…...

猫抓:网页资源获取工具的技术革新与实战应用

猫抓&#xff1a;网页资源获取工具的技术革新与实战应用 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字化时代&#xff0c;我们每天浏览大量…...

BilibiliDown:如何轻松搞定B站视频下载与批量管理的完整指南

BilibiliDown&#xff1a;如何轻松搞定B站视频下载与批量管理的完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mir…...

用Python+Neo4j构建A股知识图谱:从同花顺网页到Cypher查询的完整实战

用PythonNeo4j构建A股知识图谱&#xff1a;从数据采集到智能分析的完整技术方案 金融数据分析领域正在经历一场由知识图谱技术驱动的变革。本文将分享一个完整的A股知识图谱构建方案&#xff0c;涵盖从同花顺网页数据采集到Neo4j图数据库应用的完整技术链路。不同于简单的工具使…...

关于2026年6月14日PMI认证考试的报名通知

尊敬的各位考生&#xff1a; 经PMI和中国国际人才交流基金会研究决定&#xff0c;中国大陆地区2026年第二期PMI认证考试6月14日举办。在基金会网站报名参加本次PMI认证考试的考生须认真阅读下文&#xff0c;知悉考试安排及注意事项&#xff0c;并遵守考试有关规定。 一、 报名注…...

新手必看:OWL ADVENTURE治愈系AI,手把手教你检测‘坏图片’

新手必看&#xff1a;OWL ADVENTURE治愈系AI&#xff0c;手把手教你检测坏图片 1. 为什么需要检测"坏图片"&#xff1f; 在数字世界中&#xff0c;图片不仅仅是美丽的风景或可爱的宠物照片。它们也可能成为网络威胁的载体。想象一下这些场景&#xff1a; 你收到一…...