JSON Web Token学习笔记

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

内容简介: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 载荷部分可以存储业务相关的信息(非敏感的),例如用户信息、角色等,因此也可以用于交换信息。


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

查看所有标签

猜你喜欢:

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

Speed Up Your Site

Speed Up Your Site

Andrew B. King / New Riders Press / 2003-01-14 / USD 39.99

There's a time bomb on the web: user patience. It starts ticking each time someone opens one of your pages. You only have a few seconds to get compelling content onto the screen. Fail, and you can kis......一起来看看 《Speed Up Your Site》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具