Authorization code grant 和 Implicit grant 有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Authorization code grant 和 Implicit grant 有啥区别相关的知识,希望对你有一定的参考价值。

参考技术A Authorization code grant中文是:授权代码授予;Implicit grant中文是:隐式授权

OAuth 2.0 Authorization code Grant中“code”的生命周期

【中文标题】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,所以我一般做出回应,是的,您必须将其限制为每个授权码一个访问令牌,至少我会推荐这种方式

以上是关于Authorization code grant 和 Implicit grant 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

OAuth 2.0 Authorization code Grant中“code”的生命周期

google oauth2 grant_type=authorization_code 返回处理 OAuth 2 请求时出错

Spotify API 授权代码流返回“unsupported_grant_type”错误

Auth0 PKCE Grant 无法验证代码验证器

检索 LinkedIn 访问令牌

微信小程序之微信支付(Django)