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

全网最透彻:JWT Token 到底是什么?原理+结构+流程图+面试考点

全网最透彻:JWT Token 到底是什么?原理+结构+流程图+面试考点

    • 一、前言
    • 二、什么是 JWT?
      • 官方定义
      • 核心特点
    • 三、JWT 长什么样?
    • 四、JWT 三大部分结构详解
      • 4.1 Header(头部)
      • 4.2 Payload(负载)—— 存放数据
      • 4.3 Signature(签名)—— 最重要
    • 五、JWT 认证完整流程图(最清晰)
    • 六、JWT 认证步骤(序号版)
    • 七、JWT 为什么比 Session 好?(核心优势)
    • 八、JWT 缺点与注意事项(面试必问)
    • 九、高频面试题(满分答案)
      • 9.1 JWT 由哪三部分组成?
      • 9.2 JWT 为什么安全?
      • 9.3 JWT 存密码可以吗?
      • 9.4 JWT 与 Session 区别?
      • 9.5 JWT 如何作废?
    • 十、总结
      • JWT 核心一句话

🌺The Begin🌺点点关注,收藏不迷路🌺

一、前言

在分布式、微服务、前后端分离大行其道的今天,JWT(JSON Web Token)已经成为身份认证、接口鉴权的主流方案。

面试必问:

  • JWT 是什么?
  • JWT 由哪几部分组成?
  • JWT 为什么能实现无状态认证?
  • JWT 安全吗?

本文从原理、结构、流程、优缺点、安全实践全方位讲解,让你彻底吃透 JWT。


二、什么是 JWT?

官方定义

JWT = JSON Web Token
一种开放标准(RFC 7519),用于在网络应用中以 JSON 对象的形式安全传递信息

核心特点

  1. 轻量级:数据量小,传输快
  2. 自包含:Token 本身携带用户信息,服务器不需要存储 Session
  3. 无状态:服务端不需要保存任何会话信息
  4. 跨域/跨服务:适合微服务、分布式、前后端分离

一句话总结:
JWT 就是一个加密的、自带用户信息的“身份令牌”,服务端不用存 Session,直接验签即可认证。


三、JWT 长什么样?

JWT 是一段由3 段 Base64 编码字符串组成的文本,用.分隔:

xxxxx.yyyyy.zzzzz

示例:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ. SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

三段分别对应:Header.Payload.Signature


四、JWT 三大部分结构详解

4.1 Header(头部)

作用:描述 JWT 的加密算法、类型
示例:

{"alg":"HS256",// 签名算法:HMAC-SHA256"typ":"JWT"// 类型固定为 JWT}

4.2 Payload(负载)—— 存放数据

作用:存放用户信息(如 userId、username、过期时间)
注意:默认是 Base64 编码,不是加密!不要存密码!

标准字段(推荐使用):

  • iss:签发人
  • exp:过期时间
  • sub:主题
  • userId:用户ID

示例:

{"userId":10086,"username":"zhangsan","exp":1735689600}

4.3 Signature(签名)—— 最重要

作用:防止 Token 被篡改
生成规则:

Signature = HMACSHA256( Base64(Header) + "." + Base64(Payload), 密钥(secret) )

只有服务器持有密钥,只要签名正确,说明 Token 未被篡改。


五、JWT 认证完整流程图(最清晰)

合法

非法/过期

客户端输入账号密码登录

服务器验证账号密码

服务器生成 JWT:Header+Payload+签名

服务器返回 JWT 给客户端

客户端存储 JWT:localStorage/Cookie

下次请求:请求头 Authorization: Bearer JWT

服务器校验 JWT 签名是否正确

通过认证,返回数据

返回 401 未授权


六、JWT 认证步骤(序号版)

  1. 用户登录,发送账号密码
  2. 服务端验证成功
  3. 服务端根据用户信息生成JWT Token
  4. 服务端把 JWT 返回给前端
  5. 前端存储 JWT(localStorage / Cookie)
  6. 前端每次请求在请求头带上 JWT
  7. 服务端验证签名
    • 签名正确 → 合法用户
    • 签名错误 → 伪造/篡改,拒绝
  8. 完成鉴权

七、JWT 为什么比 Session 好?(核心优势)

  1. 无状态
    服务端不需要存 Session,内存无压力
  2. 天然支持分布式/微服务
    不需要 Session 共享(Redis)
  3. 跨域跨平台极强
    支持 APP、小程序、Web、第三方服务
  4. 自包含
    一次携带信息,不用查库
  5. 适合 RESTful API

八、JWT 缺点与注意事项(面试必问)

  1. Payload 可解码,不能存敏感信息(密码)
  2. 一旦签发,无法中途作废(除非用黑名单)
  3. 过期时间不能太长,否则不安全
  4. 密钥 secret 绝对不能泄露
  5. 体积比 SessionId 大,每次请求携带消耗流量

九、高频面试题(满分答案)

9.1 JWT 由哪三部分组成?

Header(头部)、Payload(负载)、Signature(签名)

9.2 JWT 为什么安全?

因为有签名,只要密钥不泄露,Token 无法被篡改。

9.3 JWT 存密码可以吗?

不可以!Payload 是 Base64 编码,可解码,不是加密。

9.4 JWT 与 Session 区别?

  • JWT:无状态、服务端不存储、跨域强
  • Session:有状态、服务端存储、分布式麻烦

9.5 JWT 如何作废?

无法直接作废,只能:

  • 设置短过期时间
  • 使用 Redis 黑名单

十、总结

JWT 核心一句话

JWT 是一个自带信息、带签名的无状态身份令牌,适合分布式、微服务、前后端分离项目。

结构:Header.Payload.Signature
流程:登录生成 → 前端存储 → 请求携带 → 验签认证



🌺The End🌺点点关注,收藏不迷路🌺
http://www.cnnetsun.cn/news/1713047.html

相关文章:

  • 嵌入式开源项目解析与工程化实践
  • 手机端大模型部署实战:Ollama、llama.cpp、vLLM 的选型与避坑指南
  • OpenClaw数据预处理:优化输入图片提升Kimi-VL-A3B-Thinking识别率
  • 【逆向实战】Unity3D+il2cpp手游反编译与逻辑修改全流程解析【IDA Pro+il2CppDumper】
  • 救命!这些毕设太好抄了,3000+毕设案例推荐第1019期
  • 单表数据量过大查询速度慢解决方案
  • Python + pytest 模块导入问题的标准解决方案
  • 华硕rog 硬件顶流
  • C++ lambda 捕获机制与作用域
  • 独立按键切换LED多种亮灭模式
  • Bus 001 Device 014: ID 1a86:7523 QinHeng Electronics CH340 serial converter ubuntu 没有/dev/ttyUSB0
  • JavaScript 解构赋值
  • SpringCloud快速入门--GateWay路由网关与Config配置中心
  • 别再只盯着Transformer了!手把手教你用DA-TransUNet的‘双注意力’模块提升医学影像分割精度
  • OpenClaw技能组合拳:Qwen3.5-9B实现多步骤跨境电商运营
  • ‌智慧校园平台选型怎么选?这份避坑指南请收好‌
  • 千问3.5-9B模型微调指南:优化OpenClaw任务准确率
  • 模型微调加持:OpenClaw专用Qwen3.5-9B优化实践
  • C语言开端
  • Adafruit EPD库深度解析:ePaper墨水屏驱动原理与工程实践
  • RS485接口EMC设计要点与工程实践
  • 基于MATLAB与COMSOL联合仿真的局部放电模拟系统功能说明
  • MultiTapButton:嵌入式多击按键状态机库详解
  • SparkFun MPU-9250 DMP库深度解析:9轴姿态解算与嵌入式集成实战
  • RTOS学习指南:从理论到实践的完整路径
  • BLDC无刷电机脉冲注入启动法及其保护功能与控制原理
  • Lansium-Arduino:面向物联网终端的轻量级MQTT通信库
  • OpenClaw模型微调:gemma-3-12b-it针对自动化任务的专项优化
  • OpenClaw+千问3.5-9B数据清洗:Excel表格异常值检测与修复
  • 别只当画图工具!用QGIS插件和工具箱,5分钟完成道路数据清洗与检查