JWT 访问令牌安全注意事项

瓦西里

对于我的项目,我正在实施使用不记名令牌的 OAuth2 身份验证框架。

从快速搜索来看,JWT 令牌似乎是当今不记名令牌的主流选择。

如果我使用不编码任何信息的“哑”令牌,我会将这个令牌与所有相关参数(令牌的用户、发行日期、到期日期等)一起存储在数据库中。

从 JWT 的文档中,我了解到我可以通过实现以下流程来避免这种开销:

  1. 用户使用支持的方法之一进行身份验证
  2. 身份验证服务生成 JWT 令牌并将以下参数编码到其中:用户 ID、使用的身份验证方法、发布日期、到期日期
  3. 身份验证服务对令牌进行加密然后签名
  4. 令牌发送给用户以供后续使用

加密步骤是可取的,因为我不想宣传用户 ID。

我的理解是,如果使用上述方法,可以避免存储访问令牌和用户之间的映射,而完全依赖令牌提供的用户ID信息。

这种方法让我感到不安的是,我似乎没有“撤销”访问令牌的选项。

换句话说 - 即使访问令牌被泄露,我也无法禁用它(除非我知道确切的泄露令牌,但事实并非如此)。

这是一个真正的问题,还是我只是想念一些东西?如果这种担忧是真实存在的,我该如何解决?

索玛·亚拉加达

访问令牌自包含并且只要到期时间有效就有效。在实际规范中没有关于使它们无效的规范。根据您需要的安全级别,您可以调整令牌的验证时间,从几分钟到几小时不等。通常,验证时间设置为一个小时。

如果您需要更高级别的安全性,您可以使用参考令牌。引用令牌不携带任何信息,它们是纯字符串。但是,服务器(或使用这些令牌的任何人)必须联系令牌提供者以交换实际响应内容的参考令牌。但是,如果这些令牌受到损害,它们可以被撤销。

请参阅此链接以获取有关如何克服参考代币的一些缺点的更多信息和一些建议(例如反向通道通信/与代币提供者的额外往返)。请让我知道,如果你有任何问题。

- 索玛。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章