当前位置:首页 > 科技  > 软件

一文读懂JWT

来源: 责编: 时间:2023-12-23 13:47:09 374观看
导读Labs 导读我们在做应用系统时避免不了用户的认证授权,说简单点就是:认证你是谁,授权你有什么权限。在这里先来谈谈用户的认证,目前常用的认证方式有两种:基于session认证、基于token认证。Part 01、 JWT是什么? JWT(JSON W

oaM28资讯网——每日最新资讯28at.com

Labs 导读

我们在做应用系统时避免不了用户的认证授权,说简单点就是:认证你是谁,授权你有什么权限。在这里先来谈谈用户的认证,目前常用的认证方式有两种:基于session认证、基于token认证。oaM28资讯网——每日最新资讯28at.com

Part 01、  JWT是什么?  

JWT(JSON Web Token)是一个开放的行业标准(RFC 7519),自身包含了身份验证所需要的所有信息,因此我们的服务器不需要存储用户Session信息。这显然增加了系统的可用性和伸缩性,大大减轻了服务端的压力。可以看出JWT更符合设计RESTful API时的Stateless(无状态)原则。并且使用JWT认证可以有效避免CSRF攻击,因为JWT一般是存在在localStorage中,使用JWT进行身份验证的过程中是不会涉及到Cookie的。oaM28资讯网——每日最新资讯28at.com

Part 02、  JWT由哪些部分组成? 

图片图片oaM28资讯网——每日最新资讯28at.com

JWT本质上是一组字串,通常是这样的:xxxxx.yyyyy.zzzzz,通过(.)切分成三个为Base64编码的部分:oaM28资讯网——每日最新资讯28at.com

  • Header:描述JWT的元数据,定义了生成签名的算法以及Token的类型。
  • Payload:用来存放实际需要传递的数据。
  • Signature:服务器通过Payload、Header和一个密钥(Secret)

使用Header里面指定的签名算法(默认是 HMAC SHA256)生成。oaM28资讯网——每日最新资讯28at.com

示例:oaM28资讯网——每日最新资讯28at.com

图片图片oaM28资讯网——每日最新资讯28at.com

可以通过https://jwt.io对上述JWT进行解码,解码之后便可得到Header、Payload、Signature这三部分。Header和Payload都是JSON格式的数据,Signature由Payload、Header和Secret(密钥)通过特定的计算公式和加密算法得到。oaM28资讯网——每日最新资讯28at.com

图片图片oaM28资讯网——每日最新资讯28at.com

  • Header

通常由两部分组成。oaM28资讯网——每日最新资讯28at.com

  • typ(Type):令牌类型,也就是JWT
  • alg(Algorithm):签名算法,比如HS256

示例:oaM28资讯网——每日最新资讯28at.com

图片图片oaM28资讯网——每日最新资讯28at.com

JSON形式的Header被转换成Base64编码,成为JWT的第一部。oaM28资讯网——每日最新资讯28at.com

  • Payload

包含了三种类型的声明。oaM28资讯网——每日最新资讯28at.com

  • Registered Claims(注册声明):预定义的一些声明,建议使用,但不强制。
  • Public Claims(公有声明):JWT签发方可以自定义的声明。
  • Private Claims(私有声明):JWT签发方因为项目需要而自定义的声明。

下面是一些常见的注册声明:oaM28资讯网——每日最新资讯28at.com

  • iss(issuer):JWT 签发方。
  • iat(issued at time):JWT签发时间。
  • sub(subject):JWT主题。
  • aud(audience):JWT接收方。
  • exp(expiration time):JWT的过期时间。
  • nbf(not before time):JWT生效时间,早于该定义的时间的JWT不能被接受处理。
  • jti(JWT ID):JWT唯一标识。

示例:oaM28资讯网——每日最新资讯28at.com

图片图片oaM28资讯网——每日最新资讯28at.com

Payload部分默认是不加密的,一定不要将隐私信息存放在 Payload 当中!!!oaM28资讯网——每日最新资讯28at.com

JSON 形式的Payload被转换成Base64编码,成为JWT的第二部分。oaM28资讯网——每日最新资讯28at.com

  • Signature

对前两部分的签名,作用是防止JWT(主要是payload)被篡改。签名的生成需要用到:Header+Payload、存放在服务端的密钥(一定不要泄露出去)、签名算法。签名的计算公式如下:oaM28资讯网——每日最新资讯28at.com

图片图片oaM28资讯网——每日最新资讯28at.com

算出签名以后,把 Header、Payload、Signature三个部分拼成一个字符串,每个部分之间用"点"(.)分隔,这个字符串就是JWT。oaM28资讯网——每日最新资讯28at.com

Part 03、 JWT如何进行用户认证?

在基于JWT进行身份验证的的应用程序中,服务器通过 Payload、Header和Secret(密钥)创建JWT并将JWT发送给客户端。客户端接收到JWT之后,会将其保存在Cookie或者localStorage里面,以后客户端发出的所有请求都会携带这个令牌。oaM28资讯网——每日最新资讯28at.com

图片图片oaM28资讯网——每日最新资讯28at.com

简化后的步骤如下:oaM28资讯网——每日最新资讯28at.com

1.用户向服务器发送用户名、密码以及验证码用于登陆系统。oaM28资讯网——每日最新资讯28at.com

2.如果用户用户名、密码以及验证码校验正确的话,服务端会返回已签名的Token,也就是JWT。oaM28资讯网——每日最新资讯28at.com

3.用户以后每次向后端发请求都在Header中带上这个JWT。oaM28资讯网——每日最新资讯28at.com

4.服务端检查JWT并从中获取用户相关信息。oaM28资讯网——每日最新资讯28at.com

两点建议:oaM28资讯网——每日最新资讯28at.com

1.建议将JWT存放在localStorage中,放在Cookie中会有CSRF风险。oaM28资讯网——每日最新资讯28at.com

2.请求服务端并携带JWT的常见做法是将其放在HTTP Header的Authorization字段中(Authorization:Bearer Token)oaM28资讯网——每日最新资讯28at.com

Part 04、 JWT如何防止被篡改? 

服务器返回签名之后,即使JWT被泄露或者截获,黑客也没办法同时篡改Signature、Header、Payload。oaM28资讯网——每日最新资讯28at.com

这是为什么呢?因为服务端拿到JWT之后,会解析出其中包含的Header、Payload 以及Signature。服务端会根据Header、Payload、密钥再次生成一个Signature。拿新生成的Signature和JWT中的Signature作对比,如果一样就说明Header和Payload没有被修改。oaM28资讯网——每日最新资讯28at.com

不过,如果服务端的秘钥也被泄露的话,黑客就可以同时篡改Signature、Header、Payload了。黑客直接修改了Header和Payload之后,再重新生成一个Signature就可以了。oaM28资讯网——每日最新资讯28at.com

❖注意:密钥一定保管好,一定不要泄露出去。JWT安全的核心在于签名,签名安全的核心在密钥。oaM28资讯网——每日最新资讯28at.com

Part 05、  JWT如何加强安全性?  

1.使用安全系数高的加密算法。oaM28资讯网——每日最新资讯28at.com

2.使用成熟的开源库,没必要造轮子。oaM28资讯网——每日最新资讯28at.com

3.JWT存放在localStorage中而不是Cookie中,避免CSRF风险。oaM28资讯网——每日最新资讯28at.com

4.一定不要将隐私信息存放在Payload当中。oaM28资讯网——每日最新资讯28at.com

5.密钥一定保管好,一定不要泄露出去。JWT安全的核心在于签名,签名安全的核心在密钥。oaM28资讯网——每日最新资讯28at.com

6.Payload要加入exp(JWT的过期时间),永久有效的JWT不合理。并且JWT的过期时间不易过长。oaM28资讯网——每日最新资讯28at.com

Part 06、  JWT有哪些优缺点?  

- 优点oaM28资讯网——每日最新资讯28at.com

1.无状态:自身携带用户信息,不需要在服务器上保存session信息。oaM28资讯网——每日最新资讯28at.com

2.可有效避免CSRF攻击:CSRF攻击需要依赖Cookie,然而JWT选择存放在localStorage中,因此非法链接无法获取JWT。 oaM28资讯网——每日最新资讯28at.com

- 缺点oaM28资讯网——每日最新资讯28at.com

1.不可控:就比如说,我们想要在JWT有效期内废弃一个JWT或者更改它的权限的话,并不会立即生效,通常需要等到有效期过后才可以。再比如说,当用户Logout的话,JWT也还有效。oaM28资讯网——每日最新资讯28at.com

Part 07、  JWT使用总结 

在“约定优于配置,配置优于编码”的开发理念下,通过Apollo配置中心,程序员不需要每次更改线上配置都要重新发布服务,成功实现了将配置与编码解耦,为线上服务变更配置提供了解决方案。oaM28资讯网——每日最新资讯28at.com


oaM28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-52590-0.html一文读懂JWT

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 微服务开发,这十个点你要知道

下一篇: 15个跨平台的VS Code插件

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 天猫精灵Sound Pro体验:智能音箱没有音质?来听听我的

    这几年除了手机作为智能生活终端最主要的核心之外,第二个可以成为中心点的产品是什么?——是智能音箱。 手机在执行命令的时候有两种操作方式,手和智能语音助手,而智能音箱只
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 签约井川里予、何丹彤,单视频点赞近千万,MCN黑马永恒文希快速崛起!

    来源:视听观察永恒文希传媒作为一家MCN公司,说起它的名字来,可能大家会觉得有点儿陌生,但是说出来下面一串的名字之后,或许大家就会感到震惊,原来这么多网红,都签约这家公司了。根
  • 东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,“7
  • 8月见!小米MIX Fold 3获得3C认证:支持67W快充

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
  • 苹果MacBook Pro 2021测试:仍不支持平滑滚动

    据10月30日9to5 Mac 消息报道,苹果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后获得了不错的评价,亮点包括行业领先的性能,令人印象深刻的电池续航,精美丰
Top