tnblog
首页
视频
资源
登录

JWT(json web token)

5601人阅读 2021/9/8 22:19 总访问:128935 评论:0 收藏:0 手机
分类: 概念

jwt

[toc]

官网直达jwt.io

什么是json 网络令牌

json web token (jwt) 是一个开放标准,它定义了紧凑且自包含的方式, 用于在各方之间作为json 对象安全的传输信息。 该信息是可以被验证和信任的, 因为它是经过数字签名的。

紧凑:就是网络传输快,体积小

自包含:可以包含一些自定义的数据,且信息公开。

json 对象: 归根结底它还是一种json 对象

安全:利用各种算法进行的签名

签名:就是加密, 作用就是用来验证请求,防止请求被篡改。

什么时候使用jwt

  1. 授权
  2. 信息交换

授权

  • 用户登录,后续的请求都带上jwt , 用来控制路由,资源,服务。
  • 单点登录

因为jwt 的开销很小,并且能够轻松的跨域

信息交换

  • 接口请求的时候带上: 验证是否是对方发起的。

什么是jwt 结构

jwt由(.)分割的三个部分组成: header.payload.signature

例如:xxx.yyy.zzz

header 标题

标题有两部分组成: type ,alg(加密方式)

例如:

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

然后把json base64Url 编码

payload 负载

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

  1. 注册声明: 官方推荐的 iss (发行者),exp(到期时间), sub(主题),aud(受众)
  2. 公共声明
  3. 私人

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

然后把json base64Url编码 形成jwt 第二部分

sign 签名

签名你必须获取到header ,payload 的数据并使用header 指定的算法对其签名

例如:HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

然后并将把header.payload.sign 拼接起来得到jwt.

jwt 官网解码,验证,生成jwt工具

评价
无论这个世界对你怎样,都请你一如既往的努力、勇敢、充满希望。
排名
25
文章
22
粉丝
5
评论
7
C# string 和String 的区别
剑轩 : 所以区别主要在哪里呢....
markdown 初步学习
剑轩 : 哇哦,真的喜欢你这个个性签名,很不错
pythoic 写法
剑轩 : 新年快乐啊
python拼接字符串八种
剑轩 : 手动点赞+1
python拼接字符串八种
雨雨雨雨雨辰 : 手动点赞
pythoic 写法
瑾语 : 你好
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
没有人的文明毫无意义。