JWT

作者: soojade | 来源:发表于2020-01-31 13:51 被阅读0次

后端 API 处理流程

后端 API 处理流程图

JWT 简析

JSON Web Token(JWT)是非常流行的跨域身份验证解决方案。

Token

Token 本质是字符串,用于请求时附带在请求头中,校验请求是否合法及判断用户身份

Token 与 Session、Cookie 的区别

  • Session 保存在服务端,用于客户端与服务端连接时,临时保存用户信息,当用户释放连接后,Session 将被释放;
  • Cookie 保存在客户端,当客户端发起请求时,Cookie 会附带在 http header 中,提供给服务端辨识用户身份;
  • Token 请求时提供,用于校验用户是否具备访问接口的权限。

Token 的用途

  • 拦截无效请求,降低服务器处理压力;
  • 实现第三方 API 授权,无需每次都输入用户名密码鉴权;
  • 身份校验,防止 CSRF 攻击。

JWT 构成

HEADER: ALGORITHM & TOKEN TYPE

JWT 头部分是一个描述 JWT 元数据的 JSON 对象:

{
  "alg": "HS256",
  "typ": "JWT"
}
  • alg:表示加密算法,HS256 是 HMAC SHA256 的缩写
  • typ:token 类型

PAYLOAD: DATA

JWT 数据部分,payload 是 JWT 的主体内容部分,也是一个 JSON 字符串,包含需要传递的数据,注意 payload 部分不要存储隐私数据,防止信息泄露。

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

VERIFY SIGNATURE

JWT 签名部分是对上面两部分数据加密后生成的字符串,通过 header 指定的算法生成加密字符串,以确保数据不会被篡改。

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

生成签名时需要使用密钥(如上面的 abcdefg),密钥只保存在服务端,不能向用户公开,它是一个字符串,我们可以自由指定。

生成签名时需要根据 header 中指定的签名算法,并根据下方的公式,即将 header 和 payload 的数据通过 base64加密后用.进行连接,然后通过密钥进行 SHA256 加密,由于加入了密钥,所以生成的字符串将无法被破译和篡改,只有在服务端才能还原。

相关文章

  • JsonWebToken

    JWT (JsonWebToken) JWT官网['https://jwt.io/'] JWT简介 1.JWT(J...

  • JWT介绍和使用

    最权威网址 JWT官网: https://jwt.io/ 什么是JWT Json web token (JWT),...

  • JWT实现token验证

    JWT官网:https://jwt.io/[https://jwt.io/] JWT(Java版)的github地...

  • 使用RSA公私钥实现JWT令牌的签名和验签

    使用RSA公私钥实现JWT令牌的签名和验签 1、什么是JWT令牌 JWT基本概念可从JWT[https://jwt...

  • JWT Spring-security

    JWT设计原理 JWT结合spring-security在项目中的应用 JWT[https://jwt.io/in...

  • JWT的介绍解析

    JWT的介绍解析 一、什么是JWT?了解JWT,认知JWT 首先jwt其实是三个英语单词JSON Web Toke...

  • JWT、SWT、SAML

    一、 JWT from:https://jwt.io/introduction[https://jwt.io/in...

  • jwt 在微服务中应用

    jwt token jwt 在api 方式中表中的token生成,验证以及获取jwt解密后携带的用户信息 jwt ...

  • FusionAuth JWT

    本文介绍基于 FusionAuth JWT 的 JWT 实现方法。 目录 FusionAuth JWT 简介 代码...

  • .Net Core接入JWT

    JWT网站:https://jwt.io/ JWT基础内容:https://baijiahao.baidu.com...

网友评论

      本文标题:JWT

      本文链接:https://www.haomeiwen.com/subject/ilegthtx.html