前言
本文聊聊 token 和 jwt
之前其实整理过,但是已经忘记差不多了
就想着再整理一下相关的知识
【目标】是能用自己的语言说出他们的关系
正文
一、Token
【Token(令牌)】是一个广义的概念,指代一种用于代表用户身份、权限或特定访问凭证的数字化字符串。
它一般指客户端在登录后从服务器获取的一个【凭证(Credential)】,并在后续请求中携带此凭证以【证明其身份】和【访问权限】,从而使服务器能够识别用户并控制其对资源的访问。
这是一种解决【HTTP 无状态(Stateless)】问题的常见方案。
先简单介绍到这里
需要重点记住,【Token(令牌)】是一个广义的概念!! 需要重点记住,【Token(令牌)】是一个广义的概念!! 需要重点记住,【Token(令牌)】是一个广义的概念!!
二、JWT
【JWT(JSON Web Token)】则是一种非常具体且流行的 Token 【实现标准】(【RFC 7519】)。【补充:RFC 7519 是 JWT 的官方“说明书”和“宪法”。】
它定义了一种【紧凑(Compact)】且【自包含(Self-contained)】的方式,以【JSON 对象】的形式在各方之间安全地传输信息。
一个 JWT 本质上就是一个 Token,但它具有特定的结构(由【Header.Payload.Signature】三部分组成)和特性(例如可被【数字签名(Digitally Signed)】或加密验证),这使得它比某些简单的随机字符串 Token 更安全、更通用,能够携带经过验证的【声明(Claims)】信息。
三、Token 与 JWT 的关系
Token 与 JWT 的关系是【广义概念与具体实现的关系】。
可以说,JWT 是 Token 的一种特定类型和实现标准。并非所有的 Token 都是 JWT(例如,一个简单的随机生成的【会话 Token(Session Token)】可能就不是 JWT),但 JWT 提供了一种结构化和标准化的方式来创建功能强大、可验证的 Token。
最后
回到最初的问题:
【Token(令牌)】和【JWT(JSON Web Token)】的关系是什么?
关系总结,建议全文背诵!
Token(令牌) 是一个广义的身份认证概念,它就像是一个进入特定区域的“通行证”的总称。
JWT(JSON Web Token) 是这个广义概念下的一种具体的、标准化的“通行证”格式。它就像是一种采用了特定防伪技术、并且自带持有人信息的电子通行证。
二者的核心关系可以概括为:
JWT 是 Token 的一种特定实现形式。 并非所有 Token 都是 JWT,但 JWT 是一种非常流行和强大的 Token。
相关链接
- JWT Official Website - 官方介绍、调试工具和库链接
- RFC 7519: JSON Web Token (JWT) - 官方技术规范
- Authentication vs. Authorization - 关于认证与授权的区别
- Introduction to JSON Web Tokens - JWT 入门介绍