何时在oauth2流中为非交互式客户端请求新的access_token?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了何时在oauth2流中为非交互式客户端请求新的access_token?相关的知识,希望对你有一定的参考价值。

我有关于非交互式客户端的问题,比如基于oauth2流的后端应用程序。

https://auth0.com/docs/api-auth/grant/client-credentials

根据非交互式客户端的oauth2,流程为:

  • 应用程序使用其客户端ID和客户端密钥对Auth0进行身份验证。
  • Auth0验证此信息并返回access_token。
  • 应用程序可以使用access_token代表自己调用API。

基于此,我的问题是:

  • 后端应用程序应该在本地存储access_token,或者每次客户端使用应用程序时为同一客户端请求新的access_token?
  • 如果访问令牌存储在本地,那么到期时间会发生什么?
  • 对于非交互式客户端,Access_token应该与交互式用户(登录Web)的access_token相比具有相同的到期时间?
答案

后端应用程序应该在本地存储access_token,或者每次客户端使用应用程序时为同一客户端请求新的access_token?

对于客户端凭据授予流程,是否频繁续订或“缓存”返回的JWT访问令牌的决定将取决于您的要求 - 例如,如果范围经常更改,则可能需要经常获取新的访问令牌以确保这些更改反映出来。从个人经验来看,通常情况并非如此,因此在令牌到期期间缓存令牌是有道理的,并且保存额外的调用以使Auth0获取每个请求的新令牌。

如果access_token存储在本地,那么到期时间会发生什么?

您可以选择在每次发出请求之前检查过期,并在过期时获取新的访问令牌,或者只是尝试使用访问令牌而不检查,然后尝试仅在您使用时遇到失败时续订现有令牌。

对于非交互式客户端,Access_token应该与交互式用户(登录Web)的access_token相比具有相同的到期时间?

与第一个类似的问题。由于使用客户端凭据授权流程通常表示机密/可信客户端(您正在存储客户端密钥) - 并且经常用于机器到机器方案 - 因此使用更长的到期时间可能是有意义的。但是,如前所述,如果范围可能会发生变化等,那么短期到期将导致配置更改(范围)被更快地获取。

以上是关于何时在oauth2流中为非交互式客户端请求新的access_token?的主要内容,如果未能解决你的问题,请参考以下文章

如何在张量流中为非分类对象创建一个类?

在 Spring Cloud Gateway 的 oauth2 客户端流中禁用重定向到 oauth2/authorization/registrationId

在 Laravel 5 中为非 Ajax 路由设置请求(而非响应)标头

google oauth2 刷新令牌何时过期?

Oauth2 - 客户端凭证流中的长寿命令牌与重新身份验证

是否可以仅请求用户已在 Azure AD OAuth2 隐式流中同意的范围的子集?