JWT校验
创始人
2024-06-03 17:01:47
0

JWT:JSON Web Token 的缩写

由三部分组成:Header(头部)、Payload(负载)、Signature(签名)。
随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。

因此,JWT通常如下所示: xxxxx.yyyyy.zzzzz

JWTString=base64UrlEncode(Header).base64UrlEncode(Payload).HMACSHA256(base64UrlEncode(header)+“.”+base64UrlEncode(payload),secret)

header

JWT第一部分是header,header主要包含两个部分,alg指加密类型,可选值为HS256、RSA等等,typ=JWT为固定值,表示token的类型。

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

Payload

JWT第二部分是payload,payload是token的详细内容,一般包括iss (发行者), exp (过期时间), sub(用户信息), aud (接收者),以及其他信息,详细介绍请参考官网,也可以包含自定义字段。

{"X-UserId": "001","user_name": "user001","scope": ["read", "write", "trust"],"exp": 1678817795,"jti": "fb118972-ea97-42b0-b16e-a68acf5f7ab9","client_id": "xxx"
}

Signature

  1. 签名属于jwt的第三部分。主要是把头部的base64UrlEncode与负载的base64UrlEncode拼接起来,再进行HMACSHA256加密,加密结果再进行base64url加密,最终得到的结果作为签名部分

  2. 当接收方接收到一个JWT的时候,首先要对这个JWT的完整性进行验证,这个就是签名认证。它验证的方法其实很简单,只要把header做base64url解码,就能知道JWT用的什么算法做的签名,然后用这个算法,再次用同样的逻辑对header和payload做一次签名,并比较这个签名是否与JWT本身包含的第三个部分的串是否完全相同,
    只要不同,就可以认为这个JWT是一个被篡改过的串,自然就属于验证失败了。接收方生成签名的时候必须使用跟JWT发送方相同的密钥,意味着要做好密钥的安全传递或共享

signature这部分的内容是这样计算得来的:

1、EncodeString = Base64(header).Base64(payload)
2、最终签名 = HS256(EncodeString,“秘钥”) --HMAC计算返回原始二进制数据后进行Base64编码

signature模型

base64url(//HMAC计算返回原始二进制数据后进行Base64编码HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),       your-256-bit-secret (秘钥加盐)     ) 
)

demo

authorization="Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJYLVVzZXJJZCI6IjExMDA0NSIsInVzZXJfbmFtZSI6Imxpamlhbmp1biIsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSIsInRydXN0Il0sImV4cCI6MTY3NTAyMTQ5MywianRpIjoiZTRkMmNmNzAtNzhkNy00NGFiLWFiYTMtNDM2NjJkN2JiN2ViIiwiY2xpZW50X2lkIjoiamRfcWluZ3podSIsIlgtVXNlck9wZW5JZCI6bnVsbH0.IxdAhvMfwM74ENa8Ify1cu-5lBcd4GPip6Dy0gSePQw"
JWT_SECRET="4fd300e56f2d66910c140165a2f394d5"

HMAC在线验证:https://1024tools.com/hmac

参考:使用JWT做用户登陆token校验

相关内容

热门资讯

pc掌机安装安卓系统,PC掌机... 你有没有想过,你的PC掌机也能装上安卓系统,变成一个全能的小神器呢?没错,今天就来给你详细介绍如何让...
苹果11像安卓系统,深度解析安... 你有没有发现,最近苹果11的操作系统越来越像安卓系统了呢?这可不是我随便说说哦,咱们来好好聊聊这个话...
安卓系统支付宝图标,简约而不简... 你有没有发现,手机屏幕上那个小小的支付宝图标,简直就像是个忠诚的小卫士,时刻守护着你的钱包呢?今天,...
梦幻q传没有安卓系统,探索全新... 你有没有听说最近的一款游戏《梦幻q传》?这款游戏可是让不少玩家为之疯狂呢!不过,你知道吗?它竟然没有...
TCL安卓系统电视刷机,解锁更... 亲爱的电视迷们,你是否对家里的TCL安卓系统电视感到有些厌倦,想要给它来个焕然一新的变化呢?那就跟着...
安卓系统后起之秀,揭秘后起之秀... 你知道吗?在手机操作系统这个江湖里,安卓系统可是个后起之秀呢!它就像一位默默无闻的侠客,突然间就闯出...
安卓转换电脑系统,安卓系统在电... 你有没有想过,你的安卓手机里的那些好玩的应用和游戏,能不能直接在电脑上畅玩呢?今天,就让我来带你一探...
安卓系统的爱心教程,轻松实现爱... 亲爱的安卓用户们,是不是觉得手机里的爱心图标有点神秘,不知道怎么设置呢?别急,今天就来给你来一场爱心...
适配苹果系统和安卓系统的手表,... 你有没有发现,最近手腕上的小玩意儿越来越受欢迎了呢?没错,说的就是那些集时尚与科技于一身的手表。今天...
安卓系统占用突然增高,揭秘原因... 最近你的安卓手机是不是突然感觉有点卡呢?是不是觉得内存不够用,打开个应用都要等半天?别急,今天就来给...
安卓系统怎样远程桌面windo... 你有没有想过,在安卓手机上也能轻松操控Windows系统呢?没错,这就是今天我要跟你分享的神奇技巧—...
安卓获取系统设置的铃声,解锁个... 你有没有想过,手机里那些悦耳的铃声,其实都是可以自己挑选的?没错,就是那个安卓系统里隐藏的小秘密!今...
安卓多屏操作系统,多维度交互体... 你有没有发现,最近手机屏幕越来越大,操作起来是不是有点儿手忙脚乱?别急,今天就来给你揭秘一个神奇的东...
安卓系统没有通话界面,探索安卓... 你有没有遇到过这种情况?手机屏幕上明明显示着通话界面,但是当你点进去的时候,却发现什么都没有?没错,...
安卓子系统没反应,安卓子系统故... 手机突然卡壳了,安卓子系统没反应,这可怎么办?别急,让我带你一步步排查,找出问题所在,让你的手机重焕...
安卓系统装树莓派,安卓系统下树... 你有没有想过,把安卓系统装到树莓派上,会是个什么样子呢?想象一个迷你的小树莓派,竟然能运行起我们熟悉...
海信操作系统和安卓,打造智能生... 你知道吗?在智能电视的世界里,操作系统可是个大角色呢!今天,咱们就来聊聊海信的操作系统和安卓,看看它...
召唤抽奖系统1.9安卓pc,惊... 你知道吗?最近网上掀起了一股热潮,那就是召唤抽奖系统1.9安卓PC版。这款游戏可是让不少玩家为之疯狂...
安卓如何导入鸿蒙系统文件,鸿蒙... 你有没有想过,让你的安卓手机也来个华丽变身,体验一下鸿蒙系统的魅力呢?别急,今天就来手把手教你如何导...
安卓系统播放sd卡音乐,轻松播... 你有没有遇到过这种情况:手机里存了满满的音乐,却因为系统的问题无法顺畅播放?别急,今天就来给你详细说...