JWT的使用场景和优缺点,你都清楚吗?小知

本文深入探讨JWT(JSON Web Token)的使用场景,包括一次性验证、RESTful API认证和单点登录,并分析JWT的优缺点。讨论了JWT的编码、签名和加密,以及JWT在安全性方面的问题,如签名、secret设计、注销和修改密码等。建议在Web应用中谨慎使用JWT代替session,以免引发安全隐患,而在简单的API认证中,JWT则表现良好。
摘要由CSDN通过智能技术生成

正文如下,如果觉得有用欢迎点赞、关注~~

前言

前面简单介绍了JWT的基础,但是对于JWT的应用场景和优缺点掌握的还够,这些东西只有自己实践过才能搞清楚其中的细节。在网上看到一个大佬对这块讲的比较好,就转载过来一起学习下。

编码,签名,加密

这些基础知识简单地介绍下,千万别搞混了三个概念。在 jwt 中恰好同时涉及了这三个概念,这里用大白话来做下通俗的讲解。

编码(encode)和解码(decode)

一般编码解码是为了方便以字节的方式表示数据,便于存储和网络传输。整个 jwt 串会被置于 http 的 Header 或者 url 中,为了不出现乱码解析错误等意外,编码是有必要的。

在 jwt 中以.分割的三个部分都经过 base64 编码(secret 部分是否进行 base64 编码是可选的,header 和 payload 则是必须进行 base64 编码)。

注意,编码的一个特点:编码和解码的整个过程是可逆的。得知编码方式后,整个 jwt 串便是明文了。所以注意一点,payload 是一定不能够携带敏感数据如密码等信息的。

签名(signature)

签名的目的主要是避免消息被篡改。jwt 中常用的签名算法是 HS256,常见的还有md5,sha 等,签名算法共同的特点是整个过程是不可逆的。

由于签名之前的主体内容(header,payload)会携带在 jwt 字符串中,所以需要使用带有密钥的签名算法,密钥是服务器和签发者共享的。header 部分和 payload 部分如果被篡改,由于篡改者不知道密钥是什么,也无法生成新的签名,服务端也就无法通过,在 jwt 中消息体是透明的,使用签名可以保证消息不被篡改。

加密(encryption)

加密是将明文信息改变为难以读取的密文内容,使之不可读。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。加密算法通常按照加密方式的不同分为对称加密(如 AES)和非对称加密(如 RSA)。

你可能会疑惑ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值