📝 这到底是什么? JWT 简单解析
JSON Web Token — 是用户和服务器之间交换的紧凑型数字凭证。
如果看一下示意图,可以清楚地看到:任何 JWT 都严格由三个部分组成,这些部分被编码并用点分隔成一行(X.Y.Z)。想象一下这是一个密封的包裹。
里面有三样东西:
1. 头部 — 是包裹上的外部标签。它以普通的 JSON 格式(括号内的数据集)呈现,告知这是一个什么类型的令牌,以及用于保护它的加密算法。
2. 有效负载 — 是包裹的实际内容。这些是我们想要传输的实际数据:你的姓名、用户 ID、年龄或访问权限。同样以便捷的 JSON 格式编写。
3. 签名 — 是安全印记。它使用只有服务器知道的密码自动生成。这份签名确保没有人可以在传输过程中打开令牌并更改你的数据。如果黑客更改了有效负载中的哪怕一个字符,签名都会失效。
在实践中是如何运作的?
- 你在网站上输入登录名和密码。
- 服务器验证它们,从你的数据中收集 JWT,使用私钥进行签名,然后将其发送回你的浏览器。
- 浏览器在本地保存这个令牌。
- 现在,每当浏览器向网站发送请求时,它都会在标头中附加这个令牌。
- 服务器读取标头和有效负载,验证签名,识别你的身份,并立即授予访问权限。它不再需要在数据库中存储你的会话数据了!
JSON Web Token — 是用户和服务器之间交换的紧凑型数字凭证。
如果看一下示意图,可以清楚地看到:任何 JWT 都严格由三个部分组成,这些部分被编码并用点分隔成一行(X.Y.Z)。想象一下这是一个密封的包裹。
里面有三样东西:
1. 头部 — 是包裹上的外部标签。它以普通的 JSON 格式(括号内的数据集)呈现,告知这是一个什么类型的令牌,以及用于保护它的加密算法。
2. 有效负载 — 是包裹的实际内容。这些是我们想要传输的实际数据:你的姓名、用户 ID、年龄或访问权限。同样以便捷的 JSON 格式编写。
3. 签名 — 是安全印记。它使用只有服务器知道的密码自动生成。这份签名确保没有人可以在传输过程中打开令牌并更改你的数据。如果黑客更改了有效负载中的哪怕一个字符,签名都会失效。
在实践中是如何运作的?
- 你在网站上输入登录名和密码。
- 服务器验证它们,从你的数据中收集 JWT,使用私钥进行签名,然后将其发送回你的浏览器。
- 浏览器在本地保存这个令牌。
- 现在,每当浏览器向网站发送请求时,它都会在标头中附加这个令牌。
- 服务器读取标头和有效负载,验证签名,识别你的身份,并立即授予访问权限。它不再需要在数据库中存储你的会话数据了!