如何使用 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 方实施,例如低成本云或免费开源解决方案。
我正在尝试使用 OIDC 和 OAuth2 实现刷新令牌,但我无法理解工作流程。据我所知,使用授权代码流程,在 /token
端点的响应中获取刷新令牌的是 /authorize
请求中存在 offline_access
范围。
我的问题是,如果 offline_access
范围仅发送到 [=12],那么对令牌端点的请求如何知道它应该 return 该用户登录的刷新令牌=] 端点还是该范围也应该出现在令牌请求中?或者在这种情况下,应该在 /authorize
工作流程中生成并存储刷新令牌,然后再 returned 代码然后在 /token
工作流程中查找 return到了吗?
具体遵循此工作流程:
范围在授权请求期间发送,从授权服务器的角度来看,执行了以下操作:
- 代码返回给调用者
- 代码的缓存时间很短(例如 1 分钟)
- 范围已缓存
- 在某些流程中,还会缓存 PKCE 验证程序等其他详细信息
接下来,客户端发出授权代码授予请求以交换令牌代码,授权服务器执行以下操作:
- 查找代码
- 应用 PKCE 验证检查
- 检查重定向 URI 是否与原始请求匹配
- 查找缓存范围
- 从 OAuth 客户端配置中查找详细信息,例如刷新令牌生命周期
- 根据上述数据生成代币
- 删除缓存条目,使相同的代码无法再次处理
- Returns 令牌给来电者
作为应用程序开发人员,了解 AS 行为的关键点是很有用的,如上所述,尽管我希望我遗漏了一两个要点。我的主要重点往往是在我的 UI 和 API 中集成流程。
当然,对于授权服务器,我们应该始终使用经过认证的第 3 方实施,例如低成本云或免费开源解决方案。