架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 30419|回复: 3

[资料] 关于jwt(JSON Web Tokens)的理解学习

[复制链接]
发表于 2018-5-21 15:56:52 | 显示全部楼层 |阅读模式
JWT简介:JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON对象安全传输信息。这些信息可以通过数字签名进行验证和信任。可以使用秘密(使用HMAC算法)或使用RSA的公钥/私钥对对JWT进行签名。
QQ截图20180521155736.jpg

JSON Web Tokens有用的一些场景:

身份验证:这是使用JWT最常见的情况。一旦用户登录,每个后续请求都将包含JWT,允许用户访问该令牌允许的路由,服务和资源。单点登录是当今广泛使用JWT的一项功能,因为它的开销很小,并且能够轻松地跨不同域使用。

信息交换:JSON Web Tokens是在各方之间安全传输信息的好方法。因为JWT可以签名 - 例如使用公钥/私钥对,所以可以确定发件人是他们自称的人。此外,由于使用标头和有效载荷计算签名,因此您还可以验证内容是否未被篡改。


官网:https://jwt.io/

在线解析 JWT 信息https://down.itsvse.com/tools/jwt.html

QQ截图20210912113039.jpg

在线解析jwt参数  http://jwt.calebb.net/

下面的我对JWT的理解,如果错误,请大家多多指教

首先,这玩意吧,不建议大家在mvc网站中使用,大家可以在webapi中使用,这玩意的定位就是api,并不是替代网站的session的!

asp.net webapi使用教程:https://www.cnblogs.com/lwhkdash/p/6686999.html 我就不重复造轮子了,看着这篇文章写的还可以。

JWT的构成

JWT由Header、Payload、Signature三部分构成,之间用点号风格,构成xx.yy.zz的形式。


请注意,对于已签名的令牌,此信息尽管受到篡改保护,但任何人都可以阅读。除非加密,否则不要将敏感信息放在JWT的有效内容或标题元素中。

例如:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

{
alg: "HS256",
typ: "JWT"
}.
{
sub: "1234567890",
name: "John Doe",
iat: 1516239022
}.
[signature]

我们通俗点讲,就是任何人都可以解密这段token,但是,无法验证这段信息的真实性,只有,生成这段token的服务器才能验证真实性,所以,不要把敏感信息存放在里面。


这里面有个问题,就是用户修改密码了或则禁止用户登录了,jwt怎么解决令牌的有效性呢?

我自己的想法就是在Payload部分,加一个类似guid的字符串,然后存在缓存里面,在验证用户身份的时候,不光验证jwt,还要验证jwt里面的Payload信息,我们可以通过控制缓存来控制有效性。







上一篇:C#开源框架(转载)
下一篇:You are using safe update mode and you tried to update a t
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-8-22 14:42:27 | 显示全部楼层
iss: jwt签发者
sub: jwt所面向的用户
aud: 接收jwt的一方
exp: jwt的过期时间,这个过期时间必须要大于签发时间
nbf: 定义在什么时间之前,该jwt都是不可用的.
iat: jwt的签发时间
jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。


这些是一组预定义声明,不是强制性的,但建议使用,以提供一组有用的,可互操作的声明。其中一些是: iss(发行人), exp(到期时间), sub(主题), aud(观众)等。

https://jwt.io/introduction/


码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2021-4-27 10:59:48 | 显示全部楼层
header (base64后的)
payload (base64后的)
secret

base64 字符串不满4的倍数,需要补=
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2022-1-21 17:09:52 | 显示全部楼层
"iat" => 1356999524, #token发布时间
"exp" => 1556999524, #token过期时间
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-26 17:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表