热搜:前端 nest neovim nvim

深入解析JWT(JSON Web Token)的原理及用法

lxf2023-05-26 18:15:02

这篇文章给你带来了关于JWT的相关知识,主要介绍了什么是JWT?JWT的原理和用法是什么?感兴趣的朋友,让我们来看看。我希望它能帮助你。

深入解析JWT(JSON Web Token)的原理及用法

JSON Web Token(缩写 JWT)它是目前最流行的跨域认证解决方案,本文介绍了它的原理和用法。

一、跨域认证问题

互联网服务离不开用户认证。一般流程如下。

1、用户向服务器发送用户名和密码。

2、服务器验证通过后,在当前对话中,(session)保存相关数据,如用户角色、登录时间等。

3、服务器返回给用户 session_id,写入用户的 Cookie。

4、用户随后的每一个请求都会通过 Cookie,将 session_id 返回服务器。

5、服务器收到 session_id,找到前期保存的数据,从而了解用户的身份。

这种模式的问题是可扩展性(scaling)不好。当然,单机没有问题。如果是服务器集群或跨域服务导向架构,则需要要求。 session 每个服务器都可以读取数据共享 session。

举例来说,A 网站和 B 该网站是同一公司的相关服务。现在,只要用户登录其中一个网站,然后访问另一个网站,它就会自动登录。如何实现它?

一种解决方案是 session 数据持久化,写入数据库或其他持久层。各种服务收到请求后,向持久层请求数据。该方案的优点是结构清晰,缺点是工程量大。此外,如果持久层挂断,单点将失败。

另一种方案是服务器不保存 session 数据,所有数据都保存在客户端,每个请求都发回服务器。JWT 就是这个方案的代表。

二、JWT 的原理

JWT 原理是,服务器认证后,生成一个 JSON 对象,发回用户,就像下面这样。

{