jwt认识
jwt是长这样的:
header.payload.signature
eyJhbGciOiJSUzUxMiJ9.eyJleHAiOjE1MjE1Mzg1NDMsInN1YiI6InRl.c3RlciIsIm5iZiI6MTUyMTUzNzk0MywiYl
生成规则:
b64_header = base64Encoded(header);
b64_claim = base64Encoded(claim);
payload = b64_header+'.'+b64_claim;
jwt = payload + '.' + payload.signWith(signatureAlgorithm, signingKey) //使用signatureAlgorithm中算法用盐`signingKey`将payload进行加密
header
{
"typ": "JWT",
"alg": "HS256"
}
payload(claim)
iss
: “iss” (issuer) claim 定义了发布这个JWT的当事人,包含一个 StringOrURI值sub
: “sub” (subject) claim 定义了这个JWT的subject,通常是关于subject的陈述aud
: “aud” (audience) claim在JWT中用来标识收件人,aud” 的值是有区分大小写的字符串构成的数组。每个字符串都包含一个 StringOrURI 值exp
: “exp” (expiration time)claim标识了失效时间,当达到或超过这个时间时。JWT不会被接受和处理,处理 “exp” claim 要求当前的 date/time必须在exp
claim标识的date/time 之前nbf
: “nbf” (not before)claim标识了时间点,当早于这个时间点,JWT不会被接受和处理iat
: “iat” (issued at)claim标识了JWT所颁发的时间jti
: “jti” (JWT ID)claim作为JWT 的唯一标识符
{
"iss": "www.aaa.bb",
"sub": "someone",
"aud": "toSomeone"
}
Signature
对称、非对称算法(RSA)and so on…