【问题标题】:Need help regarding refresh token mechanims需要帮助刷新令牌机制
【发布时间】:2022-01-03 18:32:57
【问题描述】:

我有一个面向客户端的 React 本机应用程序。 我正在使用 JWT 进行身份验证,其中包含快速过期的访问令牌 (10m) 和持久的刷新令牌 (7d)。
我有两台服务器,一台用于身份验证,一台用于获取其他内容。
例如:server.com/authserver.com/activities
我的问题是,如何在这里有一个好的刷新机制?
例如:如果用户在 2 天后登录并通过我的应用程序查询 API,我应该如何向他发送新的访问令牌(使用他的刷新令牌) - 请记住我的身份验证服务器位于单独的位置?
我在这里看到的明显解决方案是从/activities 联系/auth,获取新令牌并在响应的标题中发送新令牌,而在客户端继续检查标题中的新令牌并保存它们如果现在。
有比这更好的解决方案吗?这甚至是一个好的解决方案吗?

【问题讨论】:

    标签: authentication oauth jwt


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      我会做什么,据我所知,如果访问令牌过期,大多数人都会让您的 API (/activities) 以 403 响应。前端应捕获这些响应,然后根据您拥有的刷新令牌向授权服务器请求新的访问令牌。 AS 将使用新的访问令牌进行响应,前端现在可以使用该令牌发送到 API。通常这种交换会自动发生,前端最终会使用新的访问令牌重试调用 API。

      如果刷新令牌恰好过期,那么授权服务器将响应 403,这是向前端应用发出的信号,它应该要求用户再次登录。

      【讨论】:

      • 考虑到我的访问令牌的寿命很短,这不会使整个过程变得非常缓慢且对网络敏感吗?几乎所有其他呼叫都必须再次从前端联系身份验证。让我的后端在访问令牌到期(但有效的刷新令牌)时直接调用 auth 将使该过程对客户的网络具有弹性,您不觉得吗? (我是新手,所以请多多包涵)
      • 按照您的描述实现它很诱人,但它会引入一些问题。您开始使事情复杂化 - 现在您有两个客户端(前端和后端),它们在同一组令牌上运行(通常不应该发生)。此外,您还为后端调用引入了副作用。你突然必须意识到后端可能会返回新的令牌,等等。如果您关心资源,那么我会选择 Tore 提出的 BFF 解决方案,并在前端使用会话 cookie 而不是令牌。
      猜你喜欢
      • 2019-12-28
      • 2020-10-13
      • 2016-08-18
      • 1970-01-01
      • 2019-12-29
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多