可以创建端点来手动刷新 JWT 吗?

Is it ok to create an endpoint to manually refresh a JWT?

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

在某些 UI 操作中,服务器上的布尔值发生变化,应用程序需要获取新令牌以反映此变化。 要获得新令牌,浏览器可以点击一个端点来检查和验证其当前令牌,然后 return 一个新的访问令牌。明确地说,用户必须具有有效的访问令牌才能从端点获取新的访问令牌。

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

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

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

我得到了什么 -

在给定用户访问令牌的情况下,是否可以让端点刷新令牌?

上面的答案-

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

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