【问题标题】:Is it ok to create an endpoint to manually refresh a JWT?是否可以创建端点来手动刷新 JWT?
【发布时间】:2015-12-20 01:34:15
【问题描述】:

在应用程序中,我们在 JWT 有效负载中保留了一些微不足道的布尔值。

在某些 UI 操作中,布尔值会在服务器上发生变化,应用需要获取新的令牌以反映这种变化。 为了获得一个新的令牌,浏览器可以点击一个端点来检查和验证他们当前的令牌,然后返回一个新的访问令牌。需要明确的是,用户必须拥有有效的访问令牌才能从端点获取新的访问令牌。

这是一个安全问题还是可以这样做?

【问题讨论】:

    标签: api security jwt


    【解决方案1】:

    如果您的应用程序首先发布了令牌,那么让它也更新令牌应该没问题。我不认为这种情况存在特定的安全问题。如果另一个机构颁发了令牌,您的应用程序将无法更新它,因为它不应访问数字签名的签名密钥。

    在安全令牌中保留 UI 相关信息是否是一个好主意是另一回事。这些值可能更好地存储在会话信息或客户端存储中。

    【讨论】:

    • 感谢您的回复。我应该更具体。基本上,有像“emailVerified”这样的用户标志。所以我不认为它是 UI 数据,但它会根据 UI 操作进行更改,例如使用正确的参数访问验证 url。它不是 UI 状态,而是应用程序状态。还有其他类似的标志,但它们也只是我希望在某些 UI 操作上刷新的应用程序状态。这听起来好吗?
    • 没有关于什么可以和不能进入令牌的规则。通常,您只想存储不会经常更改的信息,因为令牌是数字签名的,如果其中一个声明发生更改,您需要重新颁发令牌。 email_verified 之类的东西我会考虑与身份验证相关并且可以在令牌中。
    【解决方案2】:

    我得到了什么 -

    如果给定用户访问令牌,让端点刷新令牌是否可行?

    以上问题的答案 -

    是的,这很好,正如 McdD 解释的那样,如果同一个应用程序生成了访问令牌,那么同一个应用程序刷新它是完全没问题的。

    其实access token的过期时间越小越好(根据JWT的工作原理,大部分应用都会保持几分钟到几小时),并且在access token过期后刷新token(这个这样做是为了防止滥用访问令牌)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      相关资源
      最近更新 更多