ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JWT -

2022-09-05 00:00:31  阅读:168  来源: 互联网

标签:前端 JWT 用户 Token 签名 字符串


参考资料

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 编码后用.进行连接形成最终传输的字符串。

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,签名,字符串
来源: https://www.cnblogs.com/feiqiangsheng/p/16656575.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有