恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

JSON Web Token (JWT)入门教程

  • 首页
  • 资讯中心
  • /
  • JSON Web Token (JWT)入门教程

相关资讯

Linux Devfreq 深度解析:GPU/DDR/ISP外设动态调频、架构原理、与CPUFreq区别、实操调优 2026/8/26 19:27:28
web前端开发前景分析 2026/8/26 19:27:28
离线安装Nginx 2026/8/26 19:27:28

最新资讯

如何为 HpBandSter 挑选 Budgets?多保真度超参数优化预算设置最佳实践
mes厂家有哪些?从开发与二次开发灵活性看mes厂家的业务适配深度
[AutoSar]BSW_Com010 CAN IF 模块介绍
IMA 零代码搭建财务制度 RAG 问答助手(“AI+财务“最经典应用)
数字化转型:转什么、怎么转?
mentor PRO操作要点

今日推荐

Python random 模块常用函数详解:从入门到实战
Hermes接入团队协作后,我推翻了三个效率假设
免费AI大模型调教指南:打造专属网文写作助手

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

JSON Web Token (JWT)入门教程

发布时间:2026/8/26 19:27:28
JSON Web Token (JWT)入门教程 JSON Web Token, 其缩写为JWT, 是当下最为流行的跨域认证解决方案, 本文会对它的原理以及用法予以介绍。一、跨域认证的问题互联网服务离不开用户认证。一般流程是下面这样。1、用户向服务器发送用户名和密码。2、于服务器验证得以通过之后, 于当前对话的括号之内, 去保存诸如用户角色、登录时间等这般的相关数据。3、服务器向用户返回一个 写入用户的 。4、用户随后的每一次请求都会通过 将 传回服务器。5、服务器收到找到前期保存的数据由此得知用户的身份。这种模式存在的问题是, 其扩展性并非良好状态。对于单机而言, 自然不存在问题。然而要是面对服务器集群, 或者是跨域的服务导向架构时, 便会有数据共享方面的要求, 即每一台服务器都需要具备能够读取的能力。比方说, A网站跟B网站属于同一家公司的关联服务, 当下有要求哈, 用户只要于其中一个网站进行登录, 然后再去访问另一个网站时就会自动登录, 请问要怎样达成呢?有一种解决方案, 是进行数据持久化。将数据写到数据库, 或者写入其他持久层。各类服务在收到请求之后, 都会向持久层去请求数据。这种方案具备的优点是架构清晰, 存在的缺点是工程量相对比较大。另外, 如果持久层出现故障无法正常运行, 就会导致单点失败的情况发生。还有一种不一样的方案, 那就是服务器干脆不再去留存数据了全部的数据都留存于客户端, 每一次发起请求的时候都要发送回到服务器。JSON网络令牌也就是遵循这种方案的一个典型代表。二、JWT 的原理JWT的原理为, 在服务器完成认证之后, 会生成出一个JSON对象, 随后将其发回给用户, 情形类似如下这般。姓名: 张三,角色: 管理员,到期时间: 2018年7月1日0点0分之后, 当用户同服务端进行通信之际, 均需发回此 JSON 对象。服务器完全凭借这个对象来认定用户身份。为避免用户对数据进行篡改, 服务器于生成这个对象之时, 会添加上签名(详见后文)。服务器不会保存任何数据, 这意味着, 服务器呈现为无状态, 进而比较易于实现扩展。三、JWT 的数据结构实际的 JWT 大概就像下面这样。它是个很长的字符串, 其经过中间用点(.)来分隔从而形成三个部分, 要注意, JWT内部不存在换行情况, 这里仅仅是为了使之便于展示, 所以才把它写成了几行。JWT 的三个部分依次如下。(头部)(负载)(签名)写成一行就是下面的样子。..下面依次介绍这三个部分。3.1其一, 部分它是一个 JSON 对象, 其二, 该 JSON 对象能够描述 JWT 的元数据, 其三, 其呈现出的态样常常是如下这般。alg: HS256,typ: JWT位于上面的代码里头, alg属性所表达的意思是签名的算法, 其默认状况是HMAC, 具体写成HS256typ属性所指的是这个令牌的类型, 对于JWT令牌而言, 统一将其写成JWT。首先, 把前文所提及的算法具体内容后面可见运用过来, 接着, 把上面的那个 JSON 对象 , 转变成为字符串。3.2部分是一个 JSON 对象, 它用于存放实际需要传递的数据, JWT 规定了 7 个官方字段, 可供选用。iss ()签发人exp ( time)过期时间sub ()主题aud ()受众nbf (Not )生效时间iat ( At)签发时间jti (JWT ID)编号这个部分, 除了官方字段之外, 你能够定义私有字段, 这儿接下来就是一个例子, 是这样的。sub: ,name: John Doe,admin: true留意, JWT 默认并非加密状态, 为可被任何人读取到的, 因而千万别将秘密信息放置于这个部分句号。这个 JSON 对象也要使用 算法转成字符串。3.3部分是对前两部分的签名防止数据篡改。首先, 要指定一个密钥, 此密钥唯有服务器知晓, 绝不可泄漏给用户, 接着, 运用里面所指定的签名算法默认是HMAC, 依据下面的公式来产生签名。(() . (),)算出签名之后, 将 、、 这三个部分, 拼合成一个字符串, 每一个部分之间, 用“点”.进行分隔, 如此这般便能够返回给用户。3.4前面讲述过, 而串型化的算法是这样的。此算法跟另外一种算法在大体上相类似, 不过存有一些细微的差异。JWT身为一个令牌token, 于某些场合有可能会被放置到URL像是 /?tokenxxx当中。存在三个字符 、/ 以及 , 在URL里面具备特殊含义, 因而要被替换掉: 被省略, 替换为 -, / 替换成 _。这便是算法。四、JWT 的使用方式从服务器返回的 JWT 被客户端收到后, 能够储存在其中, 也能够储存在。在此之后, 客户端每一次跟服务器进行通信的时候, 都需要带上这个 JWT。你能够把它放置在里面进行自动发送的, 然而这样做是不能够实现跨域的, 所以更为妥当的做法是将其放置在 HTTP 请求的头信息字段当中。:有另外一种做法, 当处于跨域的情形时, JWT会被放置在POST请求的数据体当中。五、JWT 的几个特点(1)JWT 起初设定为不进行加密操作, 然而它具备加密的可能性。当生成初始的 Token 之后, 能够利用密钥再次实施加密行为。(2)JWT 不加密的情况下不能将秘密数据写入 JWT。(3)JWT 不但能够被用于认证, 还能够被用于交换信息, 若能对 JWT 进行有效使用, 那么就可以使得服务器查询数据库的次数得以降低。(4)JWT极显著的弊端在于, 因服务器不为状态予以留存, 所以于使用进程里难以将某个令牌废止, 或者对令牌权限加以变更, 换句话讲, 唯有自JWT加以签发之后, 在其到期之前便始终会长久实效除非服务器去部署附加的逻辑。(5)JWT 自身含有认证方面讯息, 一旦出现泄露情况, 随便哪个人都能够获取该令牌的全部权限。为了降低被盗用的可能性, JWT 有效期应设定得相对短些。对于某些较为重要的权限, 使用之际应当再度对用户开展认证。(6)为了达成减少盗用的目的, JWT不应当采用HTTP协议以明码的方式进行传输, 而是需要运用HTTPS协议来实施传输。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号