JWT是Json web token的缩写,用做webapi的请求校验
基本组成部分:Header.Payload.Signature
Header的组成例如:
{
"alg":"HS256",
"typ":"JWT"
}
加密方式有:HMAC SHA256 or RSA(algorithm)
上面的Json通过Base64Url加密后生成JWT的第一部分
Payload:包含认证信息,如用户,其它额外信息
有三种分别是:Reserved claims,public claims.private claims
例子
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
iss: jwt签发者
sub: jwt所面向的用户
aud:接收jwt的一方
exp: jwt的过期时间,这个过期时间必须要大于签发时间
nbf:定义在什么时间之前,该jwt都是不可用的.
iat: jwt的签发时间
jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。
Base64Url加密后生成第二部分
Signature:加密方式采用Header里配置的加密方式,加密部分由前两部分集合起来,以点号隔开再加上secret.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
基本流程