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

时间:2015-01-24 20:35:49

标签: spring-security oauth-2.0

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

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

规范说刷新令牌的返回是可选的,如书面

  

授权服务器验证客户端,验证客户端           授权代码,并确保重定向URI           收到匹配用于重定向客户端的URI           步骤(C)。如果有效,授权服务器将回复           访问令牌和(可选)刷新令牌。

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

感谢 施洛米

1 个答案:

答案 0 :(得分:2)

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

  

授权码必须到期     发布后不久,以减少泄漏的风险。一个     最长授权代码的生命周期为10分钟     推荐。

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

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