json web token(JWT)(未完)

json web token的原理是:服务器端验证后,生成一个json对象,发回给用户

JWT是一个很长的字符串,包含头部、载荷、签名,中间用.分割为三个部分,即
Header.Payload.Signature

下面分别学习每个部分:

1. Header

Header部分是一个JSON 对象。

{
“alg”: “HS256”,
“typ”: “JWT”
}

alg表示签名的算法,默认HS256;
type表示令牌的类型;
最后将Header部分的JSON 对象使用Base64URL算法转成字符串。

2.Payload

Payload部分也是一个JSON 对象。
这部分有7个字段,分别是

iss (issuer):JWT的发行者
exp (expiration time):过期时间
sub (subject):JWT面向的主题
aud (audience):JWT的用户
nbf (Not Before):生效时间
iat (Issued At):签发时间
jti (JWT ID):JWT唯一标识

除此以外,也可以自定义字段。如:
{
“sub”: “123456789”,
“name”: “cseroad”,
“admin”: true
}

最后同样将该json对象使用Base64URL算法转成字符串。

3.Signature

Signature 部分是对前两部分的签名,防止数据被篡改。

首先需要一个服务器端的秘钥secretkey。然后,使用Header里面指定的签名算法(HS256(HMAC SHA256),按照公式产生签名。

公式如下:
data = base64urlEncode(header) + “.” + base64urlEncode(payload)
signature = HMAC-SHA256(data,secretkey)

JWT 漏洞

1.空密码算法
2.弱密钥
3.修改签名算法
之后再说

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值