rest - 需要一些有关 REST API 的 JWT 身份验证的信息
问题描述
我需要保护我的 REST API,因为我在一个简单的 REST API 上使用了 JWT 身份验证。完成 JWT 身份验证后,我需要回答一些问题,如果有人可以在这里帮助我,那就太好了。以下是问题:
- 基于令牌的身份验证如何比基本身份验证更安全?
- 检查令牌有效性的标准是什么?
- 什么是生成令牌的算法是 JWT?
- 令牌在哪里/如何被比较/验证?
解决方案
- 对于问题 1:两者都不比另一个安全。事实上,两者都同样容易受到攻击(请对此进行更多研究)。jwt 的优点是您可以将授权证明存储在客户端上(是的,它由您的密钥签名是安全的)。但是在会话的情况下,它们会占用服务器空间。
- 对于问题2:有效性的过程取决于实施。您可以为令牌定义到期时间,并在令牌到期后使会话无效,或者您可以使用刷新令牌来发出新令牌。验证过程涉及使用您的秘密解码令牌(在将令牌发布给客户端之前已使用该密钥对其进行签名)。
- 对于问题3:编码中涉及的通用算法是base64,而签名中涉及的通用算法是带有密钥的HS256。其他算法也用于不同的实现。
- 对于问题 4:客户端应将每个受保护请求的令牌添加到服务器(说明客户端的授权)。服务器中的初始过程将是验证令牌并查找发送请求的人。所以验证过程是在服务器上完成的。
最后,您必须记住的是,jwt 是授权证明,对于身份验证,您可以使用基于用户名密码的安全性,通过该安全性您可以发出授权令牌。
推荐阅读
- jenkins - GitHub webhook 无法连接到 VPN 内的 Jenkins?
- react-native - 如何在反应原生中拖动视图
- android - 升级 Flutter 会导致这个错误:“当前 Flutter 版本是 0.0.0-unknown”
- automation - CANopen 中的 PDO 链接
- google-apps-script - 将 Excel 转换为 Gsheet,然后在不需要 Auth 的情况下导入它们
- python - 我正在尝试找到平均速度并想要使用 Python 的最简单方法
- python - 在循环外继续,掷骰子脚本
- c++ - 有什么区别:派生类构造函数是否通过使用取消引用调用抽象类构造函数进行初始化?
- angular - 带有 RxJS 存储的 Angular Reactive Form 用于数字输入
- c# - 如何在 Caliburn Micro 中使用 LostFocus