作者:实事求是2502932297 | 来源:互联网 | 2023-09-05 18:28
篇首语:本文由编程笔记#小编为大家整理,主要介绍了jwt介绍相关的知识,希望对你有一定的参考价值。
适用场景
前后端分离时,登陆后,用户标识保存到客户端,后续请求时,带着用户标识,以此来区分是否登录。用户标识可以是用户id、也可以包含其他字段,通常还得加密或者加签名,提交到服务器端时还要验证签名,这块信息没有约定格式,jwt就是一个格式,它规定了签名、加密、内容等等。
简介
jwt=json web token,由三部分组成header、payload、sign,这三部分用点号分隔header.payload.sign。
header
header表示加密算法;
"alg": "HS256",
"typ": "JWT"
之后,将header做base64处理;
payload
payload就是内容,payload也叫claim,有三种类型,一种是registered claim、public claim、private claim,推荐使用registered
- registered,就是比较通用的数据项,含有iss (issuer), exp (expiration time), sub (subject), aud (audience), and others,为什么calim名称都是3个字母?这是为了减小大小;此种,推荐使用但不是强制的。
- public,就是好多名字已经注册到jwt registry,比如这个链接,里边包含所有已经注册的名字,还有
- private就是自己定义的。
然后将payload做base64处理;
Signature
最后一部分是Signature,签名可以防止数据被篡改,也可以用来证明发送者身份,就是将header、payload、secret做个签名。比如使用了HMACSHA256算法,则签名等于
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
最终效果可以通过在线尝试