JSON Web Token学习笔记

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:JSON Web Token是cookie session机制的一种替代方案。一般我们用户认证的流程是:(1)用户将用户名和密码发送给服务器

一、什么是JSON Web Token?

1、为什么使用JSON Web Token

JSON Web Token是cookie session机制的一种替代方案。

一般我们用户认证的流程是:

(1)用户将用户名和密码发送给服务器

(2)服务器验证并通过后,将信息存放在 session

(3)返回给客户端一个 sessionId

(4)客户端将sessionId保存在 cookie

(5)客户端后续的请求,都会将 cookie 一并发给服务器,里面就包含了 sessionId

(6)客户端通过 sessionId 识别用户

但是在跨域登陆情况下( 跨域即跨域名登陆,也就是可能会有好几个不同的服务器 ),多个服务器需要共享session。这种情况下使用JSON Web Token就会有更加方便。

2、JSON Web Token的原理

JSON Web Token实际上是一个JSON对象,使用流程为:

(1)用户将用户名和密码发送给服务器

(2)服务器将验证并通过以后,生成 JSON Web Token ,并发送给客户端

(3)客户端将其保存在local storage 或本地数据库

(4)下次客户端再次发起请求,将 Token 附加到 header 中

(5)服务器完全通过 JSON Web Token 来识别用户

这里值得注意的是,为了保证安全性,在第(2)步中,服务器会通过加密算法将Token加密,也就是说客户端保存的是个加密的Token,到第(5)步服务器对其进行解密。

3、JSON Web Token的数据结构

Token一般为三部分组成:Header.Payload.Signature

(1)Header(头部):一般包含签名的算法和令牌的属性

(2)Payload(负载):实际需要传递的数据( 一般不加密,因此不要把重要信息放在里面

(3)Signature(签名):Signature 部分是对前两部分的签名,防止数据篡改。格式一般如下(secret为密钥,只有服务器自己知道):

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

4、特点

(1)使用 json 作为数据传输,有广泛的通用型,并且体积小,便于传输

(2)不需要在服务器端保存相关信息,完全通过Token来认证

(3)jwt 载荷部分可以存储业务相关的信息(非敏感的),例如用户信息、角色等,因此也可以用于交换信息。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高性能Python

高性能Python

(美)戈雷利克、(英)欧日沃尔德 / 东南大学出版社 / 2015-2

你的Python代码也许运行正确,但是你需要运行得更快速。通过探讨隐藏在设计备选方案中的基础理论,戈雷利克和欧日沃尔德编著的《高性能Python》将帮助你更深入地理解Python的实现。你将了解如何定位性能瓶颈,从而显著提升高数据流量程序中的代码执行效率。 你该如何利用多核架构和集群?或者你该如何搭建一个可以自由伸缩而不会影响可靠性的系统?有经验的Python程序员将会学习到这类问题的具体解......一起来看看 《高性能Python》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码