在没有 OAuth2 的情况下刷新 JWT

Posted

技术标签:

【中文标题】在没有 OAuth2 的情况下刷新 JWT【英文标题】:Refresh JWT without OAuth2 【发布时间】:2020-01-14 08:47:54 【问题描述】:

我在我的 Spring Boot 应用程序和 Spring Security 中使用 JWT 进行身份验证。问题是我无法在文件 application.properties 中声明的 jwt.expiration 时间之后刷新 JWT 令牌,因此用户在 30min 后注销。我需要 OAuth2 实现还是有其他快速而简单的方法来解决这个问题?

【问题讨论】:

【参考方案1】:

这是一个相当广泛的问题,但我会尽力为您指明正确的方向。

刷新令牌是授权服务器的业务。因此,您的应用程序需要与其中之一进行对话才能更新令牌。

我会邀请您阅读OAuth 2.0 以了解续订是如何发生的。具体来说,他们需要来自该授权服务器的refresh_token grant。

根据您的描述,您可能是 OAuth 2.0 客户端应用程序,在这种情况下,您最感兴趣的是 Spring Security's OAuth 2.0 Login 和 OAuth 2.0 Client 支持。

另外,我知道你没有问这个,但我也劝阻你不要寻求“快速而肮脏”的解决方案。花点时间了解安全形势,它会在以后为您带来红利。

【讨论】:

另外,我发现这个答案虽然较旧,但仍然与对话相关:***.com/questions/26739167/…

以上是关于在没有 OAuth2 的情况下刷新 JWT的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot OAuth2 资源服务器:库如何在没有公钥的情况下验证 JWT 令牌?

撤销 JWT Oauth2 刷新令牌

安全性 - JWT 和 Oauth2(刷新令牌)

是否可以在没有刷新令牌的情况下检查 JWT 有效性?

如何在不访问身份验证服务器的情况下验证 OAuth2 访问令牌 (JWT)

如何以管理员用户身份撤销用户的访问令牌和刷新令牌?在 Oauth2 中使用 JWT