news 2026/4/3 3:03:01

JWT与OAuth 2.0的区别及关系解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JWT与OAuth 2.0的区别及关系解析

JWT 和 OAuth 2.0 是两种不同的技术,经常一起使用,但它们解决不同的问题。

核心区别

方面JWT (JSON Web Token)OAuth 2.0
本质一种令牌格式/标准一个授权框架/协议
主要目的安全地传输信息授权第三方应用访问资源
使用场景身份认证、信息交换委托授权、API访问控制
关注点如何表示和验证身份如何获取访问权限

详细解释

JWT (JSON Web Token)

  • 是什么:一种紧凑的、自包含的令牌格式

  • 结构Header.Payload.Signature三部分

  • 特点

    • 包含声明(claims),可被验证和信任

    • 自包含:不需要查询数据库即可验证

    • 可签名(JWS)或加密(JWE)

  • 主要用途

    • 身份认证(如替代Session)

    • 信息安全传输

    • 一次性验证令牌

OAuth 2.0

  • 是什么:一个授权框架,定义如何获取访问令牌

  • 核心流程

    1. 客户端申请授权

    2. 资源所有者同意

    3. 客户端获得访问令牌

    4. 使用令牌访问受保护资源

  • 授权类型

    • 授权码模式(最安全)

    • 隐式模式

    • 密码模式

    • 客户端凭证模式

它们的关系(如何一起工作)

text 用户 → 使用OAuth 2.0流程 → 获得访问令牌 → 令牌是JWT格式 → 访问API资源

常见组合模式:

  1. OAuth 2.0 + JWT访问令牌

    // OAuth 2.0颁发的访问令牌是JWT格式 access_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
  2. OpenID Connect(OIDC)

    • 基于OAuth 2.0的身份层

    • 使用JWT作为ID Token

    • 同时提供认证+授权

JWT结合OAuth 2.0的工作流程

第一阶段 (1-4步): OAuth 2.0授权

  • 用户通过客户端发起请求

  • 重定向到授权服务器进行认证

  • 用户同意授权,返回授权码

第二阶段 (5-7步): JWT令牌生成

  • 客户端用授权码交换令牌

  • 授权服务器生成JWT格式的令牌

  • JWT包含:签名、有效期、用户信息、权限范围等

第三阶段 (8-10步): JWT验证与资源访问

  • 客户端携带JWT访问API

  • 资源服务器验证JWT签名(无需查询数据库)

  • 验证成功后返回受保护资源

JWT在OAuth 2.0中的优势

  1. 自包含性

    text 解码JWT Payload示例: { "iss": "auth-server.com", // 颁发者 "sub": "user123", // 用户标识 "exp": 1672531200, // 过期时间 "scope": "read write", // 权限范围 "name": "张三" // 用户信息 }
  2. 无状态验证

    • 资源服务器通过公钥验证签名

    • 无需查询授权服务器验证令牌

  3. 减少网络调用

    • 传统OAuth令牌:每次API调用需要验证令牌有效性

    • JWT令牌:本地验证即可,减少授权服务器压力

实际应用示例

场景:用户使用微信登录第三方网站

  1. OAuth 2.0流程

    • 网站重定向到微信授权页面

    • 用户同意授权

    • 微信返回授权码

    • 网站用授权码换取访问令牌

  2. JWT的作用

    • 微信颁发的访问令牌可能是JWT格式

    • 或者ID Token(OIDC)一定是JWT格式

    • 网站可以解析JWT获取用户信息

关键要点

  • 可以单独使用

    • 只用JWT做API认证(不涉及第三方授权)

    • 只用OAuth 2.0但不使用JWT格式令牌(如使用随机字符串令牌)

  • 结合使用更强大

    • OAuth 2.0处理授权流程

    • JWT作为令牌格式,提供自包含、可验证的特性

  • 安全考虑

    • JWT一旦颁发,在有效期内无法撤销(除非使用黑名单)

    • OAuth 2.0支持令牌撤销机制

    • 结合使用时需要考虑令牌生命周期管理

总结

简单说:OAuth 2.0是“如何获取权限”的规则,JWT是“权限凭证”的一种表现形式。它们经常搭档出现,这种结合方式广泛应用于现代Web和移动应用,特别是微服务架构中,既实现了安全的第三方授权,又确保了高效的令牌验证。此外他们各自也能独立工作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 2:29:08

Hunyuan-MT-7B快速入门:30分钟搭建企业翻译中台

Hunyuan-MT-7B快速入门:30分钟搭建企业翻译中台 你是否遇到过这些场景: 海外子公司发来一封英文合同,法务要花两小时逐句核对;新上线的政务App需支持藏语界面,但本地化团队排期已到三个月后;客服系统收到…

作者头像 李华
网站建设 2026/4/1 3:29:16

看完就想试试!IndexTTS 2.0生成的虚拟偶像语音太有感染力

看完就想试试!IndexTTS 2.0生成的虚拟偶像语音太有感染力 你有没有听过这样的声音——语调轻快却不浮夸,情绪饱满却不过火,一句“欢迎来到我的频道!”像朋友在耳边笑着打招呼,连呼吸节奏都带着恰到好处的亲和力&#…

作者头像 李华
网站建设 2026/3/27 7:44:48

Qwen2.5-0.5B-Instruct交通管理:路况播报生成部署案例

Qwen2.5-0.5B-Instruct交通管理:路况播报生成部署案例 1. 为什么小模型也能干好交通播报这件事? 你可能觉得,做实时路况播报这种事,得用个“大块头”模型——参数动辄几十亿,显存占满A100,还得搭个GPU集群…

作者头像 李华
网站建设 2026/3/30 12:10:33

Whisper智能客服调优实战:从架构设计到性能优化

Whisper智能客服调优实战:从架构设计到性能优化 目标读者:已有 Python 异步编程经验、正在维护或即将上线智能客服系统的后端开发者 阅读收益:带走一套可直接落地的「异步 缓存 负载均衡」调优模板,实测 QPS 提升 2.4 倍&#x…

作者头像 李华
网站建设 2026/3/30 12:12:25

ChatGPT绘图功能实战指南:从零基础到高效创作

ChatGPT绘图功能实战指南:从零基础到高效创作 DALLE 等文本到图像(Text-to-Image,T2I)模型先把提示词(prompt)编码成高维语义向量,再在潜空间(latent space)里与噪声张量…

作者头像 李华