JWT是令牌格式标准,OAuth是授权框架;JWT由Header.Payload.Signature三部分组成,用于服务端签发、客户端携带、服务端校验;OAuth 2.0实现第三方授权委托,不处理认证本身,常返回JWT格式的Access Token。

JWT(JSON Web Token)和OAuth是两种不同层级的概念:JWT是一种令牌格式标准,用来安全地传递声明;OAuth(尤其是OAuth 2.0)是一种授权框架,定义了客户端如何代表用户获取访问权限。它们常一起使用,但不能混为一谈。
JWT 是什么?怎么用在身份验证中?
JWT 是一个紧凑、自包含的字符串,由三部分组成(Header.Payload.Signature),通常用于在服务端签发、客户端携带、服务端校验的会话凭证。
- 登录成功后,后端生成 JWT(如用
jsonwebtoken库),包含用户 ID、角色、过期时间等信息,并签名防篡改 - 前端将 JWT 存在 localStorage 或 httpOnly Cookie 中(推荐后者更安全)
- 后续请求在
Authorization: Bearer <token></token>头里带上它 - 后端收到请求后,验证签名、检查过期、解析 payload,确认身份和权限
OAuth 2.0 是什么?它解决什么问题?
OAuth 2.0 不是认证协议,而是“授权委托”协议——允许第三方应用在用户同意的前提下,以用户身份访问其在另一平台(如 GitHub、微信)的数据,而无需拿到用户密码。
- 典型流程:用户点击“用 GitHub 登录” → 跳转到 GitHub 授权页 → 用户同意 → GitHub 返回授权码 → 你的后端用码换 Access Token → 再用 Token 获取用户基本信息
- 你自己的系统不存用户密码,也不直接处理登录逻辑,而是信任 GitHub 的认证结果
- Access Token 可以是 JWT 格式(常见),也可以是 opaque 字符串(由授权服务器内部管理)
JWT 和 OAuth 的关键区别
角色不同: JWT 是“怎么装数据”,OAuth 是“怎么拿数据”。你可以不用 OAuth 用 JWT 做简单登录;也可以用 OAuth 却不用 JWT(比如返回随机字符串 token)。
立即学习“Java免费学习笔记(深入)”;
标签: javascript java js 前端 git json github cookie 支付宝 微信 app acce
还木有评论哦,快来抢沙发吧~