也许我误解了授权代码授权类型,但我认为在发出代码弹出后会将代码保存在DB中的oauth_code表中,直到它被用户撤销,但代码被删除后立即删除消耗它(第一次为令牌交换它),
那么这里的流程是什么 - 我的客户端应该保留刷新令牌以便稍后获取访问令牌(或者当用户离线时)
规范说刷新令牌的返回是可选的,如书面
授权服务器验证客户端,验证客户端 授权代码,并确保重定向URI 收到匹配用于重定向客户端的URI 步骤(C)。如果有效,授权服务器将回复 访问令牌和(可选)刷新令牌。
所以授权服务器决定不提供刷新令牌,客户端无法离线请求访问令牌,他们需要再次通过授权代码流程吗?
感谢 施洛米
答案 0 :(得分:2)
授权代码只能使用一次,并且必须具有较短的生命周期。如果您阅读了规范的第4.1.2节
授权码必须到期 发布后不久,以减少泄漏的风险。一个 最长授权代码的生命周期为10分钟 推荐。
因此,一旦使用了代码,就没有理由保留它(除了可能检测到进一步尝试使用它之外)。
刷新令牌允许客户端获取另一个访问令牌。否则,正如您所说,它需要重新执行授权代码流以从头开始获取,这需要资源所有者(用户)的交互。通常,系统将设置为向该客户端发出刷新令牌,具体取决于它是否实际需要对资源进行脱机访问,或者资源所有者(用户)是否始终直接与其进行交互。