使用有效或无效访问令牌访问 API 时,最佳流程是什么?

What is the best process flow when accessing API with valid or invalid access token?

我已经尝试 google 这个,但无法得到我正在寻找的答案。我对身份验证还很陌生,所以,也许我没有在搜索正确的术语。

我有以下设置:

我有一个 IdentityServer4 来验证 users/clients。 我有一个客户端移动应用程序。 我有一个 API 受 IdentityServer 保护。

考虑到所有可能发生的情况,我正在尝试找出在考虑用户身份验证的情况下实现程序流程的最佳方式。谁能推荐一个事件流程以获得最佳用户体验?

所以用户登录到 IdentityServer,我得到一个授权码(5 分钟后过期)。我还有一个刷新令牌,我可以安全地保存它。

我可以在接下来的 5 分钟内使用访问令牌访问 API。

现在,假设我想在几分钟后再次查询 API,我如何检测此访问令牌是否仍然有效?最好的方法是简单地尝试访问 API 并且如果您收到 401 返回带有刷新令牌的 IdentityServer 吗?还是您会在内部记录到期时间并在不跳出 API 的情况下进行刷新?我只是在寻找这方面的指导,因为我找不到关于流程的任何讨论或帖子。

首先您需要使用您的授权码来获取访问令牌。 访问令牌 默认生命周期为 1 小时。如果令牌现在有一个小时的生命周期,那么您可以在(例如)55 分钟后的代码中使用 刷新令牌 来获取新的访问令牌。

或者如您所说,如果返回 401,请尝试使用刷新令牌获取新令牌。

您还可以以编程方式将访问令牌传递给令牌内省端点以检查令牌是否仍然有效.