我们使用oauth2进行身份验证/授权,同时使用刷新和访问令牌。当访问令牌过期时,我们的移动的客户端发出刷新令牌请求。但是,移动的客户端在处理刷新令牌时遇到问题。
情况是这样的:当访问令牌过期时,用户的使用应用和刷新令牌请求触发。移动的客户端调用后端以刷新令牌,同时用户终止应用程序(由于应用程序已终止,因此移动的客户端无法获得新令牌)。后端处理刷新令牌请求并发出新的访问令牌。用户在大约20分钟后重新打开应用程序。移动的客户端自动发出另一个刷新令牌请求,但此请求使用之前发出的旧刷新令牌,因此移动的客户端应注销用户。因此,第二个刷新请求失败,因为它使用的是过时的刷新令牌。
问题:
我们如何处理应用在挂起的刷新令牌请求期间被终止的情况?
我们为刷新令牌提供了一个完整的时间段,它与访问令牌过期相同,这有助于用户很快回来))
1条答案
按热度按时间holgip5t1#
在这种情况下,移动的客户端将收到一个错误,错误代码为
invalid_grant
,就像我的代码一样。在生产环境中,仅当刷新令牌不再有效时才会出现此错误代码。这需要被客户端解释为会话过期错误,并与其他错误区分开来。这确保了一个有弹性的应用程序,你描述的边缘情况应该很少发生。然后客户端必须重定向用户以再次登录,这可能是一个次要的可用性问题。或者,可以禁用刷新令牌循环以防止此问题。正如Steve在他的评论中所说,通常建议避免这样做,因为它会降低安全性。