JWT格式:
Header.Payload.Signature
Header: {
"alg": "HS256","typ": "JWT"}
其中 alg:表示使用的算法默认是HS256 ,typ:表示token类型
然后再用Base64URL 算法进行机密生成一串字符串
Payload: 也是一个 JSON 对象,用来存放实际需要传递的数据。JWT 规定了7个官方字段,供选用。
{
iss (issuer):签发人
exp (expiration time):过期时间
sub (subject):主题
aud (audience):受众
nbf (Not Before):生效时间
iat (Issued At):签发时间
jti (JWT ID):编号
}
当然也可以在这一部分存储自己定义的端
Signature:这一部分就是 base64UrlEncode(header)+ base64UrlEncode(palyoad)+密钥
使用alg的算法进行加密
JWT原理:
web345
抓包访问/admin页面看到有这样一个内容,将这个内容进行base64解码
可以看到有前面两部分,在alg对应的是none就是没有加密方式
{
"alg":"None","typ":"jwt"}?
[{
"iss":"admin","iat":1718866523,"exp":1718873723,"nbf":1718866523,"sub":"user","jti":"0212359dcd5afaabef646309ffb86792"}]
我们将内容复制进脚本里面
import jwt
payload = {
"alg":"None","typ&