如何使用 OIDC 请求刷新令牌

How do I request a refresh token using OIDC

我正在尝试使用 OIDC 和 OAuth2 实现刷新令牌,但我无法理解工作流程。据我所知,使用授权代码流程,在 /token 端点的响应中获取刷新令牌的是 /authorize 请求中存在 offline_access 范围。

我的问题是,如果 offline_access 范围仅发送到 [=12],那么对令牌端点的请求如何知道它应该 return 该用户登录的刷新令牌=] 端点还是该范围也应该出现在令牌请求中?或者在这种情况下,应该在 /authorize 工作流程中生成并存储刷新令牌,然后再 returned 代码然后在 /token 工作流程中查找 return到了吗?

具体遵循此工作流程:

范围在授权请求期间发送,从授权服务器的角度来看,执行了以下操作:

  • 代码返回给调用者
  • 代码的缓存时间很短(例如 1 分钟)
  • 范围已缓存
  • 在某些流程中,还会缓存 PKCE 验证程序等其他详细信息

接下来,客户端发出授权代码授予请求以交换令牌代码,授权服务器执行以下操作:

  • 查找代码
  • 应用 PKCE 验证检查
  • 检查重定向 URI 是否与原始请求匹配
  • 查找缓存范围
  • 从 OAuth 客户端配置中查找详细信息,例如刷新令牌生命周期
  • 根据上述数据生成代币
  • 删除缓存条目,使相同的代码无法再次处理
  • Returns 令牌给来电者

作为应用程序开发人员,了解 AS 行为的关键点是很有用的,如上所述,尽管我希望我遗漏了一两个要点。我的主要重点往往是在我的 UI 和 API 中集成流程。

当然,对于授权服务器,我们应该始终使用经过认证的第 3 方实施,例如低成本云或免费开源解决方案。