encryption - 为什么 JWT Token 包含用于加密/签名的算法
问题描述
包含用于签名的算法的 JWT Token 的目的是什么?客户端不需要这些信息,服务器端应该已经知道这个算法。
解决方案
首先,规范强制要求“alg”声明不仅适用于加密的 JWT (JWE),而且适用于(仅)签名的 JWT (JWS)甚至不安全的 JWS。
为什么引用使用的加密算法是一个好主意的一个中心原因是 RFC 7518 定义为“加密敏捷性”:
实施者应该意识到加密算法会随着时间的推移而变得更弱。随着新密码分析技术的开发和计算性能的提高,破解特定密码算法的工作因素将减少。因此,实施者和部署必须为支持和使用的算法集做好准备,这些算法会随着时间的推移而变化。因此,密码算法实现应该是模块化的,允许容易地插入新算法。
加密敏捷基本上意味着您的 Auth-Server 可以同时使用多种算法。这例如允许使用新的/不同的算法签名和/或加密的令牌的优雅推出,而不会破坏对已发布令牌的支持。
由于 JWT 用于我所说的无状态身份验证,因此 Auth-Server 理想情况下不存储任何令牌状态。因此,使用的算法需要作为令牌元数据的一部分存储在其标头中。
推荐阅读
- html - 为什么内容比 div 大?
- javascript - 单击按钮时重绘屏幕
- storage - 如何将外部硬盘驱动器从路由器连接到我的 Iphone (NAS)
- cpu-architecture - 确定 12 位指令微处理器的最大内存大小、最大唯一操作数和无符号常量的最大值
- android - 在没有 android studio 项目的情况下访问文件资源管理器
- python - 子进程正在运行我的命令但不打印实时输出
- json - 导入数据时 MongoDB 身份验证错误
- amazon-ec2 - CM & CD 服务器如何在 sitecore 中通信?
- php - 我从 dompdf 生成了多个 pdf,但是如何在本地保存这些文件
- json - 如何验证 json 对象中的 JSON 对象数组?