什么是 JWT?
JWT (JSON Web Token) 是目前最流行的跨域认证解决方案,是一种基于 Token 的认证授权机制。 从 JWT 的全称可以看出,JWT 本身也是 Token,一种规范化之后的 JSON 结构的 Token。
JWT 自身包含了身份验证所需要的所有信息,因此,我们的服务器不需要存储 Session 信息。这显然增加了系统的可用性和伸缩性,大大减轻了服务端的压力。
JWT 更符合设计 RESTful API 时的「Stateless(无状态)」原则 。
并且, 使用 JWT 认证可以有效避免 CSRF 攻击,因为 JWT 一般是存在在 localStorage 中,使用 JWT 进行身份验证的过程中是不会涉及到 Cookie 的。
组成部分
JWT 本质上就是一组字串(header.payload.signature
),通过 . 分成三个 Base64 编码的部分:
- Header : 描述 JWT 的元数据,定义了生成签名的算法(HSAC)以及
Token
的类型。 - Payload : 用来存放实际需要传递的数据,如用户名、用户ID等等(不需要保密的数据)