首页 文章

Spring oauth2 - 使用后删除授权代码

提问于
浏览
2

也许我误解了授权代码授权类型,但我认为在发出代码弹出后会将代码保存在DB中的oauth_code表中,直到它被用户撤销,但代码在消费后立即被删除(首先你交换这个令牌的时间),

那么这里的流程是什么 - 我的客户应该保留刷新令牌以便稍后获取访问令牌(或者当用户离线时)

规范说刷新令牌的返回是写的可选

授权服务器对客户端进行身份验证,验证授权代码,并确保收到的重定向URI与步骤(C)中用于重定向客户端的URI相匹配 . 如果有效,授权服务器将使用访问令牌和可选的刷新令牌进行响应 .

所以授权服务器决定不提供刷新令牌,客户端无法离线请求访问令牌,他们需要再次通过授权代码流程吗?

谢谢Shlomi

1 回答

  • 2

    授权代码只能使用一次,并且必须具有较短的生命周期 . 如果你阅读它所说的规范的第4.1.2节

    授权代码必须在发布后立即到期,以减少泄漏风险 . 建议最长授权代码生存期为10分钟 .

    因此,一旦使用了代码,就没有真正的理由保留它(除了可能检测到进一步尝试使用它之外) .

    刷新令牌允许客户端获取另一个访问令牌 . 否则,正如您所说,它需要重新执行授权代码流以从头开始获取,这需要资源所有者(用户)的交互 . 通常,系统将设置为向该客户端发出刷新令牌,具体取决于它是否实际需要对资源进行脱机访问,或者资源所有者(用户)是否始终直接与其进行交互 .

相关问题