什么是jwt
web中以json数据传输的token
jwt 原理
jwt 由浏览器第一次成功访问服务器时,服务器生成token令牌并响应给浏览器保存,以后浏览器每次访问服务器时都携带这个token,服务器拦截请求并验证token,通过则处理业务,不通过则返回到登录页面。
jwt 组成
jwt由3部分组成
header 头部
{
"typ":"jwt",
"alg": "HS256" //token加密算法
}
payload 负载|载荷
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
signature 签名
要创建签名部分,您必须获取编码的头、编码的有效负载、密码、头中指定的算法,并对其进行签名。
例如,如果要使用HMAC SHA256算法,将按以下方式创建签名:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
***将所有内容放在一起***
输出是三个由点分隔的Base64-URL字符串,这些点可以在HTML和HTTP环境中轻松传递,与基于XML的标准(如SAML)相比更紧凑。
下面显示了一个JWT,它对前面的头和有效负载进行了编码,并用密码进行了签名。
jwt防篡改原理
**jwt token验证会通过.分割的方式获得头部,载荷和签名,从破译头部获取加密的算法,加上自己服务器保存的secret秘钥,对头部和载荷重新进行加密得到新的签名,与分割的签名进行校验。**
参考:https://jwt.io/introduction