JWT
代表“JSON Web Token”。
JWT 是一种行业标准的令牌,用于在双方之间共享安全信息。JWT 体积小且适合用于URL,因此Web 服务器和客户端可以在HTTPS请求中交换 JWT。JWT 最常见的用途是验证登录网站或Web 应用的用户身份,通常通过单点登录(SSO)服务实现。
JWT 由三部分组成:
- 标头包含令牌类型以及用于生成数字签名的算法信息。
- 载荷包含令牌所声明的一系列信息。这些声明通常包括令牌颁发者、使用令牌的网站或 Web 应用以及用户的信息。其中还包括令牌的颁发时间和过期时间两者都使用(纪元时间)。除了这些常见值之外,JWT 还可以包含颁发令牌的网站或 Web 应用定义的任意声明。
- 签名用于验证令牌自颁发后未被篡改。
网站和 Web 应用通常使用 JWT 作为一种无状态的用户身份验证方法。它们不要求服务器在其内存或数据库中维护会话,从而减少每个用户所需的开销。相反,客户端和服务器会在每个 HTTPS 请求中来回传递 JWT,并验证签名以确保令牌未被修改。JWT 过期后,用户必须重新登录,系统才会颁发新的 JWT。
创建 JWT
JWT 的标头和载荷都由用JSON编写的文本组成。标头和载荷分别使用一种名为 base64 的算法进行编码,将多行文本转换为一个字符串。编码后的标头字符串和载荷字符串会合并,并用“.”字符分隔。
包含编码后的标头和载荷的合并字符串会再次使用哈希算法和密钥进行编码,以创建签名。随后,签名会追加到标头和载荷的末尾,并用另一个“.”字符分隔,从而创建最终的 JWT。
测试你的知识