当前位置: 首页 > 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实现了高效、安全的身份验证,但需结合实际需求权衡其无状态特性和潜在的安全风险。

http://www.xdnf.cn/news/368317.html

相关文章:

  • 高频算法面试题总结
  • 系统的从零开始学习电子的相关知识,该如何规划?
  • 高效处理CR
  • 耀圣-气动带刮刀硬密封法兰球阀:攻克颗粒高粘度介质的自清洁 “利器”
  • (八)Java面向对象编程三大特性:封装、继承与多态性详解
  • Linux 系统安装Minio详细教程
  • 音视频同步知识
  • 今日行情明日机会——20250509
  • Codeforces Round 1023 (Div. 2)
  • 反向沙箱介绍
  • 麒麟系统使用-个性化设置
  • 库室指静脉人脸门禁机 LK-BM-S10C/JR
  • CDGP|数据治理怎么带动企业高速发展?
  • 革新锅炉厂智能控制——Ethernet IP转CANopen协议网关的工业互联新方案
  • 【UltralyticsYolo11图像分类完整项目-04】代码重构
  • 出现在‘{‘的段错误
  • 【RAG官方大神笔记】检索增强生成 (RAG):Python AI 教程的详细介绍
  • 【Qwen3_ 4b lora xinli】
  • 深入理解大模型分片优化:Late Chunking 技术解析
  • A2A与MCP定义下,User,Agent,api(tool)间的交互流程图
  • Agent-S: 操作计算机的智能代理框架
  • LVGL源码学习之渲染、更新过程(3)---绘制和刷写
  • 华为欧拉(EulerOS)系统全栈软件部署指南:从 Redis 到 MySQL 实战详解
  • JAVA继承中变量和方法的存储和方法中访问变量的顺序
  • 视频流:大华及海康视频流本地测试预览
  • LeetCode 解题思路 47(最长回文子串、最长公共子序列)
  • SQL注入的绕过方式
  • 【人工智能学习之动作识别TSM训练与部署】
  • 通信阵列波导性能提升难?OAS 软件助力精准解决
  • 操纵杆支架加工工艺及钻3φ11孔夹具设计