什么是JWT?

JWT(JSON WEB TOKEN)详解 JWT(JSON WEB TOKEN),本文主要详细讲解了jwt,从其定义、token的理解、结构、使用等等帮助深刻理解jwt。 阅读详情

JWT 是什么?

JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且独立的方法,用于在各方之间安全地将信息作为JSON对象传输。 由于此信息是经过数字签名的,因此可以被验证和信任。 可以使用密钥(使用HMAC算法)或使用RSA或ECDSA的公用/专用密钥对对JWT进行签名。

尽管可以对JWT进行加密以在各方之间提供保密性,但我们将重点关注已签名的令牌。 签名的令牌可以验证其中包含的声明的完整性,而加密的tokens则将这些声明隐藏在其他方的面前。 当使用公钥/私钥对对token进行签名时,签名还证明只有持有私钥的一方才是对其进行签名的一方。

什么时候需要使用JWT ?

有如下几个场景使用JWT是有帮助的:

  • 授权:这是JWT的最常见使用场景。 一旦用户登录,后续每个请求将携带JWT,从而允许用户访问该token允许的路径,服务和资源。 单一登录是当今广泛使用JWT的一项功能,因为它的开销很小并且可以在不同的域名中轻松使用。
  • 信息交换:JWT是在各方之间安全传输信息的一种好方法。 因为可以对JWT进行签名(例如,使用公钥/私钥对),所以您可以确定发送人是他们自己。 此外,由于签名是使用header和payload计算的,因此您还可以验证内容是否被篡改。

JWT结构是什么 ?

JWT 以紧凑的形式由三部分组成,这些部分由点(.)分隔,分别是:

  • Header
  • Payload
  • Signature

典型的JWT如:xxxxx.yyyyy.zzzzz

Header

Header包含两部分, token类型,值为JWT,签名算法,如HMAC SHA256 或 RSA。例如:

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

Header JSON使用Base64Url 编码作为JWT的第一部分。

Payload

JWT第二部分是负载,其中包含claims。 claims是有关实体(通常是用户)和其他数据的声明。 共有三种类型的claims:注册,公有和私有声明。

  • 注册声明:这些是一组非强制性的但建议使用的预定义声明,以提供一组有用的,可交换信息的声明。 其中一些是:iss(发行者),exp(到期时间),sub(主题),aud(受众)等。请注意,声明名称仅使用三个字符是为了使JWT紧凑。
  • 公有声明:这些可以由使用JWT的人员随意定义。 但是为避免冲突,应在IANA JSON Web Token注册表中定义它们,或将其定义为包含抗冲突名称空间的URI。
  • 私有声明:这些是自定义声明,旨在在同意使用它们的各方之间共享信息,既不是注册声明也不是公共声明。

Payload 结构如下:

{ "sub": "1234567890", "name": "John Doe", "admin": true }

payload 使用Base64Url 编码作为JWT的第二部分。请注意,对于已签名的Token,此信息尽管可以防止篡改,但任何人都可以读取。 除非将其加密,否则请勿将机密信息放入JWT的Payload 或Header元素中。

Signature

要创建签名部分,您必须获取编码的Header,编码的Payload 和一个密钥,使用Header中指定的算法对其进行签名。

例如使用 HMAC SHA256算法,signature 创建类似如下:

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

该签名用于验证消息在此过程中是否未被更改,并且对于使用私钥进行签名的Token,它还可以验证JWT的发送者是他本人。

JWT 如何工作?

在身份验证中,当用户使用其凭据成功登录时,将返回JWT。 由于Token是凭据,因此必须格外小心以防止安全问题。 通常,Token的保留时间不应超过需要的时间。由于缺乏安全性,您也不应该将敏感的会话数据存储在浏览器中。

每当用户想要访问受保护的路径或资源时,用户代理通常应使用Bearer 模式在Header Authorization 中发送JWT。 header 的内容应如下所示:

Authorization: Bearer <token>

在某些情况下,这可以是无状态授权机制。 服务器的受保护路径将在Authorization header中检查有效的JWT,如果存在,则将允许用户访问受保护的资源。 如果JWT包含必要的数据,则可以减少查询数据库中某些操作的需求。如果Token是在 Authorization Header中发送的,则可以支持跨域资源共享(CORS)。

下图显示了如何获取JWT并将其用于访问API或资源:

(1)应用程序或客户端向授权服务器请求授权。 这是通过一个简单的授权流程执行的。 例如,一个典型的符合OpenID Connect的Web应用程序将使用授权代码流程通过/oauth/authorize端点。

(2)授予认证后,授权服务器会将access token返回给应用程序。

(3)应用程序使用access token访问受保护资源。

请注意,使用签名的Token,Token中包含的所有信息都会暴露给用户或其他方,即使他们无法更改它。 所以不应将机密信息放入Token中。

为什么我们需要使用JWT?

由于JSON没有XML那么冗长,因此在编码时JSON的大小也较小,从而使JWT比Security Assertion Markup Language Tokens (SAML)更为紧凑。 这使得JWT是在HTML和HTTP环境中传递的不错的选择。

在安全方面,Simple Web Tokens (SWT)只能被对称签名通过使用HMAC算法由共享秘钥进行。 但是,JWT和SAML Token可以使用X.509证书形式的公私钥对进行签名。 与签名JSON的简单性相比,使用XML数字签名对XML进行签名而不引入模糊的安全漏洞是非常困难的。

JSON解析器在大多数编程语言中都很常见,因为它们直接映射到对象。 相反,XML没有自然的文档和对象映射。 与SAML相比,这使JWT更加容易使用。

关于用法,JWT是在Internet规模上使用的。 这强调了在多个平台(尤其是移动平台)上对JWT进行客户端处理的简便性。

 

JWT 使用注意项:

(1)JWT 默认是不加密,但也是可以加密的。生成原始 Token 以后,可以用密钥再加密一次。

(2)JWT 不加密的情况下,不能将秘密数据写入 JWT。

(3)JWT 不仅可以用于认证,也可以用于交换信息。有效使用 JWT,可以降低服务器查询数据库的次数。

(4)JWT 的最大缺点是,由于服务器不保存 session 状态,因此无法在使用过程中废止某个 token,或者更改 token 的权限。也就是说,一旦 JWT 签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。同时也不便于查询实时在线用户。

(5)JWT 本身包含了认证信息,一旦泄露,任何人都可以获得该令牌的所有权限。为了减少盗用,JWT 的有效期应该设置得比较短。对于一些比较重要的权限,使用时应该再次对用户进行认证。

(6)为了减少盗用,JWT 不应该使用 HTTP 协议明文传输,要使用 HTTPS 协议传输。

(7)客户端接收服务器返回的JWT,将其存储在Cookie或localStorage中。存储在Cookie中,就可以自动发送,但是不会跨域。为了支持跨域一般将它放入HTTP请求的Header Authorization字段中或者放置于POST请求的数据主体中。

 

 

JWT 实战教程 JWT 实战教程 注:资料整理自b站up主,编程不良人 1.什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted bec 阅读详情

相关推荐

浅析JWT| JWT是啥子,Java构建JWT

小声bbb 说到系统的安全识别,记得自己第一个项目,用的就是session,用户登录进来以后,给他session标记登录,记录id进去,轻轻松松,设计的操作也很简单,类似操作HashMap。 这大概也有1年多快两年了,现在回头看真的是可怕,几乎在裸奔 众所周知,平常使用的Session是存储在服务器的一种技术,可以理解为一个会话id,每次使用HTTP请求,都会携带一个sessionId,服务器根据这个SessionId去找对应的session しかし,我预判了你的预判 第三方完全可以随便输入一个sess

可乐的博客 4482

什么是JWT?(细致讲解)

什么是JWT?传统的session、token认证、JWT登录鉴权

Ethereal的博客 8万+

【JWT】入门 *JWT*,并封装一个实用的 *JWT* 工具类

JSON Web 令牌 (JWT) 是一种开放标准 (RFC 7519),它定义了一种紧凑且独立的方式,**用于将信息作为 JSON 对象在各方之间安全地传输** 。此信息可以被验证和信任,因为它是经过数字签名的。JWT 可以使用密钥(使用 **HMAC** 算法)或使用 **RSA** 或 **ECDSA** 的公钥/私钥对进行签名。

ebb29bbe的博客 3129

JWT简介、JWT优缺点、JWT使用方法、.NET6使用JWT示例、JWT与Session对比

JWT简介、JWT优缺点、JWT使用方法、.NET6使用JWT示例、JWT与Session对比

1万+

JWT结构详解与JWT设置

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务端生成一个token并返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。JWT是 JSON Web Tokens 的简称,从单词可以看出它也是一种 token,其实可以理解为一种生成token的框架或规范。

Sup星月★然的博客 1992

JWT - 令牌认证(认证流程和原理、Jwt 工具类、搭配 Redis 使用)

1. 首先前端将用户名和密码发送给后端,后端对用户名和密码校验成功后,会将用户 id 和其他信息作为 payload ,然后将其分别进行 Base64 编码,拼接,最后再签名,形成一个 JWT(Token). 形成的 JWT 就形同 xxx.yyy.zzz 这种结构的字符串.http 协议是一种无状态的协议,也就意味着当用户第一次通过用户名和密码登录成功以后,下一次再请求的时候,用户还需要再进行登录才行,因为根据 http 协议,我们不能知道是哪个用户发出的请求.

CYK_byte的博客 2万+

JWT详解

本文从本人博客搬运,原文格式更加美观,可以移步原文阅读:JWT详解 JWT简介 1.什么是JWT 在介绍JWT之前,我们先来回顾一下利用token进行用户身份验证的流程: 客户端使用用户名和密码请求登录 服务端收到请求,验证用户名和密码 验证成功后,服务端会签发一个token,再把这个token返回给客户端 客户端收到token后可以把它存储起来,比如放到cookie中 客户端每次向服务端请求资源时需要携带服务端签发的token,可以在cookie或者header中携带 服务端收到请求,然后去验证客户端请

baobao的博客 28万+

LangChain + PlayWright实战:5分钟搞定网页自动化测试(附完整代码)

本文详细介绍了如何利用LangChain与PlayWright构建智能网页自动化测试系统。通过环境配置、核心架构设计、实战Agent构建及性能优化等步骤,开发者可以快速实现高效的Web操作自动化,提升测试效率。文章还提供了完整代码示例和典型问题解决方案。

weixin_27791839的博客 239

什么是JWT?深入理解JWT从原理到应用

JWT(JSON Web Token)是一种用于在网络应用间传递和验证信息的开放标准(RFC 7519)。它通过使用数字签名或加密,将一些声明式的信息进行编码,生成一个经过验证的令牌。JWT主要由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。

万维网连五洲,二进制写尽天下事,喜欢结识新伙伴寻找志同道合的朋友,欢迎一起探讨学习 8011

7.7 数据分析助手:用AI洞察业务数据价值

摘要:AI数据分析助手构建指南 本文介绍了如何构建AI数据分析助手,帮助企业从业务数据中提取价值。系统包含四大核心模块:自然语言理解模块解析用户查询意图,查询规划模块转换为SQL语句,数据可视化模块生成图表,以及洞察生成模块提供深度分析。文章通过销售数据分析助手案例,展示了从数据库准备到自然语言处理的完整实现流程,包括示例代码和系统架构图。该解决方案可降低数据分析门槛,让业务人员直接参与数据探索,提升决策效率。

yonggeit的博客 4092

生信实战:用bcftools玩转VCF文件处理(从压缩到注释全流程)

本文详细介绍了使用bcftools处理VCF文件的全流程实战指南。从数据准备、压缩索引、信息提取、质量统计到核心的变异过滤与功能注释,手把手教你高效管理基因组变异数据。重点阐述了如何利用bcftools进行VCF文件注释,整合外部数据库信息,为变异位点添加关键的生物学标签,是生物信息学数据分析的必备技能。

rgv23456789的博客 341

JWT及JWT伪造

文章目录JWT简介传统的Session认证基于token的鉴权机制JWT的构成头部(header)载荷(payload)签证(signature)通过JWT 进行认证JWT token破解绕过JWT伪造Bukgu jwt——JWT伪造 JWT简介 Json web token (JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519)。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被

qq_45521281的博客 1万+

【教程】BM1684X-32边缘计算盒子 网络配置教程

BM1684X边缘计算盒子网络配置教程

ShiMetaPi的博客 714

jwt

文章目录介绍JWT的验证过程实例 在之前的项目中,大部分网页是通过session来判断用户是否有权限来访问个别网页的,但是如果是SPA项目的话,前后端分离,客户请求的是前端,所以并不会保存数据到session,那该怎么办呢? 针对这一问题,可以使用jwt来解决! 介绍 JWT也就是JSON Web Token(JWT),是目前最流行的跨域身份验证解决方案。 JWT的组成: 一个JWT实际上就是一个...

大屌的博客 9679

长短期记忆网络(LSTM)预测模型及其Python和MATLAB实现

LSTM 通过独特的门控机制解决了传统 RNN 的梯度消失和梯度爆炸问题,使其在处理长序列时具有显著优势。随着技术的不断发展,LSTM 及其变种(如 Bi-directional LSTM、Stacked LSTM 等)有望在更复杂的任务中发挥重要作用。2. **可视化真实值和预测值**:通过绘图来比较真实值和预测值,判断模型的准确性。2. **输入门(Input gate)**:决定当前的输入信息对细胞状态的影响。1. **细胞状态(Cell state)**:保持信息在时间步之间的传递。

qq_45441438的博客 2055

Unity类银河战士恶魔城学习总结(P103之前 Enemy相关 , 骷髅战士,状态机,敌人状态,)

udemy的Alex银河战士恶魔城,记录我自己的学习,代码会逐渐每一p更新,仅供参考学习。

suzh1qian的博客 1633

JWT 教程_1 SpringBoot与JWT整合

https://gitee.com/fakerlove/spring-security 文章目录1. 介绍2. SpringBoot与JWT整合2.1 JWT的结构:2.2 JWT的使用测试:1) java-jwt 版本2) jjwt 版本检验过期时间自定义claim2.3 SpringBoot与JWT整合: 1. 介绍 https://jwt.io/ Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为

wujing1_1的博客 4万+

多思计组实验实验三、存储器读写实验

实验三、存储器读写实验

qq_53089329的博客 3652

JWT教程【JWT】

JWT教程【JWT】

小心星的博客 1196

改进的主动轮廓模型实现图像分割

主动轮廓模型的优点在于可以自适应地调整轮廓形状和位置,适用于不同形状和大小的目标分割。改进的主动轮廓模型是一种有效的图像分割方法,能够适应不同场景下的图像分割需求。改进的主动轮廓模型涉及到许多参数,如模型参数、分割参数、权值系数等,这些参数的调整也会直接影响到分割结果。本文将介绍一个改进的主动轮廓模型,该模型可以实现对图像进行有效的分割。改进的主动轮廓模型是在传统的主动轮廓模型基础上进行的改进。和传统的模型相比,改进的主动轮廓模型加入了外部力和内部力,能够更好地适应复杂场景下的图像分割。

qq_39605374的博客 295

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【JWT】快速了解什么是jwt及如何使用jwt

是一种用于在网络应用间安全传递声明(claim)的开放标准。和。头部主要包含了用于描述 JWT 类型以及所使用的签名算法的信息。载荷包含了需要传递的声明(claim),比如用户身份、权限等信息。签名则是对头部、载荷和一个密钥进行的签名,用于验证数据的完整性。

无法自律的人的博客 1597

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JWT — JWT原理解析及实际使用

一、JWT 1、JWT介绍 JWT(json web token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用户登录。在传统的用户登录认证中,因为http是无状态的,所以都是采用session方式。用户登录成功,服务端会保存一个session,服务端会返回给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。

qq_38658567的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JWT简介& JWT结构& JWT示例& 前端添加JWT令牌功能& 后端程序

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。

qq_73126462的博客 1万+

Jwt

1. JWT是什么 JSON Web Token (JWT),它是目前最流行的跨域身份验证解决方案 JWT的精髓在于:“去中心化”,数据是保存在客户端的。 2. JWT的工作原理 1、是在服务器身份验证之后,将生成一个JSON对象并将其发送回用户,示例如下: {"UserName": "Chongchong","Role": "Admin","Expire": "2018-08-08 20:15:...

weixin_45174537的博客 1863
上一篇: kylin介绍
下一篇: OAuth2介绍与使用
youbo_sun
博客等级 码龄12年 20粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值