JWT 介绍
JWT 即 JSON Web Token,是用 JSON 形式安全传输信息的方法。
我们可以在 jwt.io 上在线解析 token,可以清楚看懂 JWT 的数据结构。
对 JWT 解码,可以得到以下内容:
- Header:TOKEN 的类型,就是JWT,签名的算法,如 HMAC、 SHA256
- Payload:携带的信息,比如用户名、过期时间等,一般叫做 Claim
- Signature:签名,是由header、payload 和你自己维护的一个 secret 经过加密得来的。
JWT 可以设置过期时间,它的应用主要有:
-
Access Token:添加到 HTTP 请求的 header 中,进行用户认证。加上过期时间可以让 token 被恶意截获后,黑客只有短暂的时间攻击。
-
Refresh Token:用来给客户端申请新的 Access Token 或者 Refresh Token。比 Access Token 有更长过期时间。
一般服务端生成 JWT 并返回给客户端时,要放在 cookie里,并且加上 HttpOnly
的标记,意味着这个 cookie不能被 JS获取,这样可以防止 XSS 攻击。