参考资料
1、官方网站:https://jwt.io/
JWT 介绍
JWT 的本质就是一个字符串,它是将用户信息保存到一个 Json 字符串中,然后进行编码后得到一个 JWT token,并且这个 JWT token 带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为 Json 对象传输。
JWT 的认证流程如下:
1、首先,前端通过表单将自己的用户名和密码发送到后端的接口,这个过程一般是一个 POST 请求。建议的方式是通过 SSL 加密的传输(HTTPS),从而避免敏感信息被嗅探。
2、后端核对用户名和密码成功后,将包含用户信息的数据作为 JWT 的 Payload,将其与 JWT Header 分别进行 Base64 编码拼接后签名,形成一个JWT Token,形成的 JWT Token 就是一个如同 yyy.zzz.xxx 的字符串。
3、后端将 JWT Token 字符串作为登录成功的结果返回给前端。前端可以将返回的结果保存在浏览器中,退出登录时删除保存的 JWT Token 即可。
4、前端在每次请求时将 JWT Token 放入 HTTP 请求头中的 Authorization 属性中。
5、后端检查前端传过来的 JWT Token,验证其有效性,比如检查签名是否正确、是否过期、token 的接收方是否是自己等等。
6、验证通过后,后端解析出 JWT Token 中包含的用户信息,进行其他逻辑操作,一般是根据用户信息得到权限等,返回结果。
JWT 结构
JWT 由 3 部分组成:标头(Header)、有效载荷(Payload)和签名(Signature)。在传输的时候,会将 3 部分分别进行 Base64 编码后用.进行连接形成最终传输的字符串。
\Header
JWT 元数据的 JSON 对象,alg 属性表示签名使用的算法,默认为 HS256;typ属性表示令牌的类型,JWT 令牌统一写为JWT。
{
"alg": "HS256",
"typ": "JWT"
}
Payload
JWT的主体内容部分,也是一个 JSON 对象,包含需要传递的数据。 JWT指定七个默认字段供选择。
iss:发行人
exp:到期时间
sub:主题
aud:用户
nbf:在此之前不可用
iat:发布时间
jti:JWT ID用于标识该JWT
Signature
对上面两部分数据签名,需要使用 base64 编码后的 header 和 payload 数据,通过指定的算法生成哈希,以确保数据不会被篡改。首先,需要指定一个密钥(secret)。该密码仅仅为保存在服务器中,并且不能向用户公开。
标签:前端,JWT,用户,Token,签名,字符串 From: https://www.cnblogs.com/feiqiangsheng/p/16656575.html