本页讨论哪一种 JWT?
JWT 用来承载声明,可采用 JWS 签名或 MAC 保护,也可采用 JWE 加密。本页只模拟采用 RS256 的紧凑签名 JWT:受保护头、声明载荷和签名组成三段。[1][2]
044 / Web 与应用 / JWT
JWT · JWT
令牌写着一个用户和一组权限。接收它的 API 仍要追问:谁签的、发给谁、现在有效吗、准备用来做什么?最后再判断这次操作是否获准。
守卫拿着人物卷轴,用发光圆镜核验;旁边兜帽人物的相似卷轴带着红叉。卷轴比喻本页的签名令牌,画里的勾不能替代签发者、受众、时间与业务权限检查。
本课任务 / JWT
亲手探索 / 不同条件,不同结果
选择预置令牌、接收 API、服务端时钟、新旧密钥信任窗口和读取或删除动作。实验固定 RS256 与必需声明策略,显示首个失败点;它不解析用户令牌,也不执行真实验签。
令牌验收工作台
读书会 API 收到一枚令牌。先查看它声称了什么,再预测在哪一步停下;改变接收方、时间或操作,观察同一枚令牌的不同结果。
只使用虚构记录,不接收真实令牌,不执行密码学或网络请求。下方是紧凑签名 JWT(JWS)的已解析字段,不是可用凭据;JWT 也可以加密或嵌套。
尚未运行。默认是只读令牌申请删除:你预计验签会失败,还是会在后面的授权检查停下?
本例假设主体和记录归属已知,未检查撤销、重放、账户状态或完整业务授权;不要把“本例允许”理解为上线安全证明。
随手查 / 把理解带回实际工作
实验是简化模型。真实环境需要明确业务规则、验证失败路径,并持续维护配置与证据。
01 / 实用细节
配置允许算法及对应密钥类型,不能让令牌的 alg 自行改变验证方式。本例只允许 RS256/RSA,并拒绝 none 或算法混用;这不表示所有其他算法在任何应用中都不安全。[3]
02 / 实用细节
密钥来自预先信任的签发者配置。kid 不是可信证明,令牌中的任意 URL 也不该触发自动取钥;轮换期只接受明确保留的旧钥匙,移除信任后的旧令牌应失败。[3]
03 / 实用细节
iss 标明签发者,sub 标明该签发者上下文中的主体,aud 约束接收者。本例要求这些声明,并把笔记 API 与账单 API 分开;同一个签发者不等于所有服务都可接受。[1][3]
04 / 实用细节
在本例零时钟宽容策略下,now 小于 nbf 时拒绝,等于 nbf 可继续;now 等于或大于 exp 时拒绝。真实系统可定义小幅时钟偏差,但需明确上限,不能随意延长令牌寿命。[1]
05 / 实用细节
为不同种类令牌建立互不混用的验证规则。本例检查 typ=at+jwt 和应用私有 token_use=access;后者并非所有 JWT 的标准必填项,本演示也不宣称实现完整 RFC 9068 配置。[3][4]
06 / 实用细节
只读 scope 可以通过令牌验证,却不允许删除。API 还需核对对象和租户权限;签名 JWT 也不会自动拥有即时撤销能力,需要按架构设计有效期、撤销状态与密钥管理。[4]
从模拟,到验证
勾选用于本页自查,不会自动标记整课已学会。练习与清单刷新后重置。
本页已检查 0 / 5 项
小测结果同步错题本;“已学会”沿用原有本地学习记录。
JWT 形式、注册声明与 nbf/exp 边界;必需声明由使用场景确定
紧凑 JWS 的三个编码部分及签名输入
算法约束、可信密钥、签发者、受众与用途隔离
API 令牌所需声明、逐接口访问控制与提前失效
本页场景、人物与数据均为教学示例。互动选择不会上传;收藏、已学会与错题沿用当前浏览器本地存储。来源正文核对日期:2026-10-08。