json web token 简称 JWT,它并不是一个具体的技术实现,而更像是一种标准。

JWT规定了数据传输的结构,一串完整的JWT由三段落组成,每个段落用英文句号连接(.)连接,他们分别是:Header、Payload、Signature,所以,常规的JWT内容格式是这样的:AAA.BBB.CCC

并且,这一串内容会base64加密;也就是说base64解码就可以看到实际传输的内容。接下来解释一下这些内容都有什么作用。

Header

Header包含加密的方式、type,比如:

Payload

然后我们来看BBB代表的Payload:

顾名思义,这里就会包含实际传递的参数内容,比如:

记住,在这里不要传递那些很敏感的数据,因为只要base64解码就可以看到,除非你还额外加密一层。

Signature

最后一部分是CCC代表的Signature,当然也是字面意思——签名,base64解码后,是这个样子:

它主要决定了Header、Payload有没有被人篡改;如果内容被篡改,那么这条JWT将会被视为无效。

如何工作

那么,一串JWT如何发挥它的作用呢?正常来说,每一次请求都像图里这样就传入就可以了。

记住内容前面的“Bearer”是固定的,并且还得多加一个空格做分割。

应用场景

基本上绝大部分的人都用JWT做登录授权,它相比原先的session、cookie来说,更快更安全,跨域也不再是问题,更关键的是更加优雅(抠鼻.jpg)~

当然它也可以用来传递数据(payload已经是了),只不过我个人觉得做传输不太好用(实际上我想市场也这么觉得),原因几点:

1、如果是公开展示数据的话,我何必先加签才返回呢?

2、如果是私密数据的话,人家base64解码就能看到,不合适吧?即便我把payload内容加密,可这样一来就加密好几次了,我直接用别的加密手段它不香么?

或许是目前的业务需求并没有很契合,童鞋们遇到了可以一起讨论下。

最后

JWT大概是和 .net core 一起进入我视野的,它相对轻便、优雅,对服务器基本没依赖,所以我基本所有项目的登录授权都在用它。用它这么久了还没仔细梳理下,所以今天抽时间写一篇。没有翻查什么文献,也没有很高大上的词缀,就是单纯以我的角度阐述我对它的认识。回头补一篇它在net core的实现,这一篇就先这样吧。

JWT基本概念的更多相关文章

  1. 一文带你搞懂 JWT 常见概念 & 优缺点

    在 JWT 基本概念详解这篇文章中,我介绍了: 什么是 JWT? JWT 由哪些部分组成? 如何基于 JWT 进行身份验证? JWT 如何防止 Token 被篡改? 如何加强 JWT 的安全性? 这篇 ...

  2. JWT基础概念详解

    JWT基础概念详解 JWT介绍 之前我们文章讲过分布式session如何存储,其中就讲到过Token.JWT.首先,我们来回顾一下使用Token进行身份认证. 客户端发送登录请求到服务器 服务器在用户 ...

  3. Spring Boot Security 整合 JWT 实现 无状态的分布式API接口

    简介 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.JSON Web Token 入门教程 - 阮一峰,这篇文章可以帮你了解JWT的概念.本文重点讲解Spring Boo ...

  4. 关于JWT.NET

    1.JWT的概念: JWT全称是Json Web Token,是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准( RFC 7519 ),定义了一种简洁的,自 ...

  5. JWT到底是个什么鬼?

    前面一篇我们了解了微服务安全认证架构是如何演进而来的,但是发现v2.5架构仍然较重,有没有轻量级一点的方法呢?其实业界早已有了实践,它就是基于JWT的安全认证架构.JWT到底是个什么鬼呢?本篇为你解答 ...

  6. 一文搞懂Cookie,Session,Token,JWT

    HTTP协议是无状态的,无状态意味着,服务器无法给不同的客户端响应不同的信息.这样一些交互业务就无法支撑了.Cookie应运而生. Cookie 通过F12开发者工具,先瞅瞅Cookie的颜值 从图中 ...

  7. 冷饭新炒:理解JWT的实现原理和基本使用

    前提 这是<冷饭新炒>系列的第五篇文章. 本文会翻炒一个用以产生访问令牌的开源标准JWT,介绍JWT的规范.底层实现原理.基本使用和应用场景. JWT规范 很可惜维基百科上没有搜索到JWT ...

  8. 【SpringBoot技术专题】「JWT技术专区」SpringSecurity整合JWT授权和认证实现

    JWT基本概念 JWT,即 JSON Web Tokens(RFC 7519),是一个广泛用于验证 REST APIs 的标准.虽说是一个新兴技术,但它却得以迅速流行. JWT的验证过程是: 前端(客 ...

  9. 一起了解 .Net Foundation 项目 No.8

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. IdentityModel ...

随机推荐

  1. CF724G 【Xor-matic Number of the Graph】

    题目就不翻译了吧,应该写的很清楚了... 首先 \(,\) 不懂线性基的可以戳这里.知道了线性基\(,\) 但是从来没有写过线性基和图论相结合的\(,\) 可以戳这里. 好\(,\) 点完了这些前置技 ...

  2. JVM系列【5】JVM常用指令

    JVM系列笔记目录 虚拟机的基础概念 class文件结构 class文件加载过程 jvm内存模型 JVM常用指令 GC与调优 指令集分类 基于寄存器的指令集 基于栈的指令集 Hotspot中的Loca ...

  3. python实现自动生成小学四则运算题目(软工第二次项目作业)

    前言 软件工程 传送带 作业要求 传送带 作业目标 结对编程:代码实现.性能分析.异常处理说明.记录PSP表格 代码见: github 个人信息:朱育清 3118005437 信安二班 我的partn ...

  4. js 为什么0.1+0.2不等于0.3

    当程序员在使用浮点数进行计算逻辑处理时,不注意,就可能出现问题, 记住,永远不要直接比较俩个浮点的大小 这个属于数字运算中的精度缺失的问题 在0.1 + 0.2这个式子中,0.1和0.2都是近似表示的 ...

  5. 多测师讲解python _函数的传递_高级讲师肖sir

    题目:   要求1.通过函数来实现       2.引用函数传递方法        3.引用返回值   有一个登录系统:账号admin  密码123456 验证码abc123    账号.密码.验证码 ...

  6. MeteoInfoLab脚本示例:加载地图图层

    应用最广泛的的地图数据应该是shape格式,网络上有很多免费下载资源.MeteoInfoLab中读取shape文件的函数是shaperead,参数即文件名,返回数据包含图形和属性信息的图层对象.矢量图 ...

  7. MeteoInfoLab脚本示例:多Y轴图

    数据范围相差比较大的数据序列进行对比的时候多Y轴图就很重要了.MeteoInfoLab中提供了一个twinx函数来根据已有的坐标系(Axes)生成一个新的Axes,这个命令会使得已有的Axes不绘制右 ...

  8. Jenkins集成appium自动化测试(Windows篇)

    一,引入问题 自动化测试脚本绝大部分用于回归测试,这就需要制定执行策略,如每天.代码更新后.项目上线前定时执行,才能达到最好的效果,这时就需要进行Jenkins集成. 不像web UI自动化测试可以使 ...

  9. Linux基础命令之.命令

    . 点命令 .命令等同source 可以让配置文件被读到进程中,立刻生效

  10. 在学习python的过程中,遇到的最大的困难是什么?

    本人文科生,回顾自己近 2 年的Python 自学经历,有一些学习心得和避坑经验分享给大家,让大家在学习 Python 的过程中少走一些弯路!减少遇到不必要的学习困难! 首先,最开始最大的困难应该就是 ...