同时从移动设备和 Web 刷新 JWT 令牌的最佳实践

Posted

技术标签:

【中文标题】同时从移动设备和 Web 刷新 JWT 令牌的最佳实践【英文标题】:Best practice of refreshing JWT tokens from mobile and web simultaneously 【发布时间】:2021-10-07 12:02:35 【问题描述】:

我们正在构建一个客户应用程序。为此,我们正在使用会计软件 (ZOHO)。项目将从会计软件中提取,并使用 API 直接在会计软件上生成账单。 API 使用 JWT 进行身份验证。要为每个用户生成 JWT 令牌,则需要一个“用户同意页面”,应从 Web 浏览器手动批准。因此,对于我们不会注册为用户的每个客户,我们计划将他们创建为客户。

我们现在真正计划做的是创建一个 JWT 令牌对(在手动批准后)并将其用于所有客户的所有 API 调用。我首先担心的是,这会是一个好方法吗?

第二个问题,令牌的有效期为 1 小时。之后,我们应该使用刷新令牌来生成新令牌。我们如何在网络和移动设备上有效地处理这个问题(网络和移动设备上的客户同时使用相同的令牌进行 API 调用,令牌更改应该反映在所有客户端设备上)?这样做是个好主意吗?

【问题讨论】:

【参考方案1】:

在这种情况下,您可以在 Zoho Books 中为基于服务器的应用程序创建一个连接,从而使用 OAuth 对 API 调用进行身份验证。当您设置此集成时,通过 API 进行的通信将仅在 Zoho Books 和您的第三方应用程序之间进行,而不是在 Zoho Books 和您的客户之间直接进行。因此,您可以在最后为您的客户验证用户界面。

当您最初构建 API 集成时,您将创建一个刷新令牌。这可以在您的脚本中进行硬编码,并设置为每小时从中生成访问令牌。请注意,必须为基于 Web 和基于移动的应用程序分别生成刷新令牌和访问令牌。这是我们的帮助资源供您参考。您可以存储访问令牌和到期时间,并在使用访问令牌之前验证到期时间。如果它已过期,则生成一个新的访问令牌。请格外小心,以确保不会暴露刷新令牌。

我希望这会有所帮助。如果您有任何疑问,请随时与我们联系。

【讨论】:

“这是我们的帮助资源”——在哪里?

以上是关于同时从移动设备和 Web 刷新 JWT 令牌的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

使用 JWT 和刷新令牌对移动应用程序进行身份验证

Django REST JWT 刷新

Xamarin.iOS / Web API JWT 刷新令牌(如果过期)

在 nodejs 中使用 JWT 刷新令牌的最佳实践

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

通过安全令牌进行 API 身份验证的最佳实践(Node.js 服务器和移动应用程序)