当前位置: 首页 > 知识库问答 >
问题:

如何用oauth2静默刷新过期的JWT令牌?

姜嘉赐
2023-03-14

我们决定使用OAuth2从Hazelcast共享会话切换到无状态JWT身份验证/授权,并发现了一个不适合我们下面描述的基础结构的问题。

因此,我们有多个独立的系统,可以通过直接链接访问,即mysite.com/scs1和mysite.com/scs2。

每个scs都有自己的UI和后端,但是“会话”(通过无状态JWT授权实现)必须在多个scs之间有效。

OAuth2授权服务器是一个专用服务器(UAA)。在OAuth2术语中,每个scs都是一个资源服务器。

让我们假设用户登录到scs1(通过UAA)并获得ttl=10分钟的JWT和ttl=30分钟的RefreshToken。然后他将该选项卡留在浏览器中15分钟。JWT过期,但选项卡仍然包含来自SCS1的前一页。然后用户单击该页面上的一个链接,该链接随后指向mysite.com/scs3。

scs3接收一个请求,检查JWT并发现它已经过期。但是我们有一个RefreshToken(仍然活动15分钟)可以刷新jwt。

是否可能从scs3返回一个响应,要求浏览器转到UAA并静默刷新JWT?

也许是某种重定向到/uaa/authorization,并具有添加RefreshToken头的能力?

共有1个答案

裴楚青
2023-03-14

我们终于找到了在我们的案例中如何处理令牌刷新。

JWT有TTL=10min刷新令牌有TTL=30min

Javascript嵌入到我们站点的每个页面中,每8-9分钟刷新一次JWT。因此,当用户的浏览器中有一个打开的选项卡时,刷新过程将无缝地发生。

    null

此时,后端只接收到过期的JWT。因此后端将用户重定向到专用网页/try-refresh?uri=mysite.com/scs1

 类似资料:
  • 当访问Google-Drive时,访问令牌可能过期,我们可以使用刷新令牌获得新的访问令牌。但是,有许多可能的原因,即刷新令牌本身停止工作或过期,请参见: https://developers.google.com/identity/protocols/oauth2#过期 所以我的问题是,如果刷新令牌在6个月后过期了会发生什么,我如何检测它?刷新访问令牌的请求是否在403被禁止的情况下失败,或者返回

  • google oauth2刷新令牌何时过期? 我所说的过期是指过期是因为经过了某个时间跨度(不是因为用户已撤销访问权限或用户已请求新的刷新令牌) 我做了一些研究,没有一个引用官方的谷歌文档(我也找不到一个有效的谷歌文档) 其他一些问题表示,由于时间,它从未过期: 谷歌刷新令牌过期了吗? https://community.fitbit.com/t5/web-api-development/inva

  • 我一定是漏掉了什么! 我一直在尝试使用新的(对我来说是新的,来自delphi xe2环境)TOAuth2Authenticator、TRESTClient、TRESTRequest、TRESTResponse组件刷新过期的OAUTH2令牌 null 我假设(看来是错误的),如果我尝试对服务器执行请求,并且令牌已经过期,那么组件应该有足够的细节来意识到令牌已经过期,并在需要的时候刷新它。 我认为没有

  • 问题内容: 我们的React Native Redux应用程序使用JWT令牌进行身份验证。有许多操作需要此类令牌,​​并且例如在应用加载时会同时分派许多令牌。 例如 双方并要求JWT。我们将令牌保存在和中。我的问题是如何处理令牌到期。 最初,我将使用中间件来处理令牌到期 } 我遇到的问题是,对于令牌和操作,都会刷新令牌,因为在分发令牌和令牌时,令牌将过期。理想情况下,我想“暂停”需要身份验证的操作

  • 我遇到的问题是,和操作都将刷新令牌,因为在分派时,令牌将过期。理想情况下,我希望“暂停”需要身份验证的操作,直到令牌刷新。有没有一种方法可以用中间件做到这一点?