OAuth 2.0 Authorization code Grant中“code”的生命周期
Posted
技术标签:
【中文标题】OAuth 2.0 Authorization code Grant中“code”的生命周期【英文标题】:OAuth 2.0 Life cycle of "code" in Authorization code Grant 【发布时间】:2016-11-29 18:09:21 【问题描述】:授权码授予:我知道该代码是短期令牌交换为真正的长期访问令牌。我已经浏览了Oauth 2.0,但找不到此信息,所以在这里询问:
代码的生命周期是什么? 只能一次性使用吗? 代码可以交换多少次以获得访问令牌? 为该代码提供访问令牌后,该代码会发生什么情况?我正在使用oAuth 2.0 plugin on Kong API gateway。它使代码在特定时间内保持活动状态,并且到那时可以使用相同的代码生成多个访问令牌。 这是预期的行为吗?
感谢您的建议。
【问题讨论】:
【参考方案1】:代码是短暂的一次性访问令牌。 一旦它被交换为访问令牌,它应该被标记为无效。 对于Kong问题最好问它here
【讨论】:
【参考方案2】:授权码必须是短暂的,并且应该是一次性使用,以避免虚假使用。所以来回答你的问题
代码的生命周期是什么?
当用户使用 authorication_code 流进行身份验证时,一旦通过身份验证并授予范围访问权限,将创建一个短暂的(例如 1 分钟)有效代码并将其发送回重定向 uri。只能一次性使用吗?
是的,它必须是一次性使用以获得最佳安全性,当使用授权码请求访问令牌时,请求成功或失败(由于某些验证错误或服务器错误),授权码必须被删除或标记为使用过(取决于你想如何使用它)代码可以交换多少次才能获得访问令牌?
一个授权码只能授予一个访问令牌,因为一旦颁发了一个访问令牌,该代码就会被撤销。在为该代码提供访问令牌后该代码会发生什么情况?
最佳实践,代码可删
查看 google oauth2.0 文档以更好地理解并了解其使用方式。
https://developers.google.com/identity/protocols/OAuth2WebServer
对于 Kong 问题,它似乎是 kong 中的一个错误,他们承诺在 0.9 版本中提供修复。 检查这个discussion。
【讨论】:
感谢您的回复。我也有同样的想法,但正如我所提到的,我在 Kong API 网关上使用 OAuth 2.0 插件来保护我的 API,这就是它的行为方式。它在特定时间(大约 10 分钟)为同一代码生成多个访问令牌。我应该限制它吗?此信息是否记录在某处或基于您的经验? 是的,我读到了,而且我使用 Kong API,所以我一般做出回应,是的,您必须将其限制为每个授权码一个访问令牌,至少我会推荐这种方式以上是关于OAuth 2.0 Authorization code Grant中“code”的生命周期的主要内容,如果未能解决你的问题,请参考以下文章
OWIN OAuth 2.0 Authorization Server
OWIN OAuth 2.0 Authorization Server
OAuth 2.0 之 Authorization code 与 Implicit