美文网首页
JWT学习笔记

JWT学习笔记

作者: hanxs | 来源:发表于2018-04-20 16:43 被阅读0次

本文是我在学习JWT过程中一些简单的总结,欢迎大家批评指正。

参考文章

简介

JWT(JSON Web Token)是一种非常简单的规范,可以让我们通过它生成一种特定格式的token,来实现client和server之间的安全传递信息。并且不需要后台来管理这个token,只需要在每次用户请求接口的时候对这个token进行计算即可。我把它理解为是一种特殊的session。

组成

JWT由三部分组成:header、payload、signature。

  • header:所使用加密算法。进行base64编码
  • payload:一条包括JWT标准定义的几个字段和用户自定义的字段的json信息。然后进行base64编码
  • signature:用header里描述的算法,和后台的秘钥,把header和payload的base64字符串拼接完以后的字符串,进行加密

样例

JWT:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y922BhjWgQzWXcXNrz0ogtVhfEd2o

header:

{
  "alg": "HS256",
  "typ": "JWT"
}

payload:

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

使用方式

  • 用户登录
  • 后台验证用户名密码以后,签发token,并存储到cokkie
  • 用户再次访问
  • 后台从cokkie中获取token;验证payload中token签发者、接受者、生效失效时间等;并重新根据header中的算法,把header和payload加密,与signature比对是否一致
  • 比对一致以后从payload中获取用户id等自定义信息,进行业务处理,相应用户信息

与普通session存储方式对比

后台无需存储session,但需要每次请求都要重新计算token是否有效。

还有很多,大家可以一起讨论。

base64编码是可逆的,所以不要在payload里存放敏感信息。

官方文档

https://jwt.io
https://github.com/auth0/java-jwt

相关文章

  • JSON Web Token 攻击面

    学习笔记,来源于前人文章的整合。 0×00 什么是JWT JWT ( JSON Web Token 的缩写)是一串...

  • JWT学习笔记

    本文是我在学习JWT过程中一些简单的总结,欢迎大家批评指正。 参考文章 JSON Web Token - 在Web...

  • JWT学习笔记

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的...

  • 学习笔记 - JWT

    JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。 1. 一般的认证流程 用户向服务器发...

  • Web安全通讯之JWT的Java实现

    本文用于个人学习笔记 上篇文章中目的是介绍 Json Web Token(以下简称 jwt) ,由于我对 Java...

  • JWT 笔记

    JWT 笔记 ***参考链接 参考链接1 参考链接2 官方库 当使用一个API时,其中一个挑战就是认证(authe...

  • SpringSecurity(一):表单认证(待整理)

    随笔记录,待整理 SpringSecurity + JWT 表单认证 自定义WebSecurityConfigur...

  • jwt学习

    jwt是如何验证的? jwt保存在客户端,每次请求时都将其放在header中,这样服务器接收到请求后,取出jwt进...

  • jwt 学习

    安全认证 [TOC] 库 CORS:解决跨域问题 https://github.com/expressjs/cor...

  • JWT 学习

    前言 在实际测试网站时多次遇到JWT认证,赶紧把这块知识点通过CTF题目的方式补上。 JWT 定义 JWT 全称是...

网友评论

      本文标题:JWT学习笔记

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