OAuth2.0/OIDC 中的 grant_type 与 response_type

Posted

技术标签:

【中文标题】OAuth2.0/OIDC 中的 grant_type 与 response_type【英文标题】:grant_type vs response_type in OAuth2.0/OIDC 【发布时间】:2018-12-26 10:27:24 【问题描述】:

我不太明白OAuth2.0/OIDC规范中response_typegrant_type之间的区别。

我的猜测是 grant_type 在与令牌端点交互时在 URL 中指定(以获取 access 和/或 刷新令牌) , response_type 用于与授权端点交互以获取身份令牌授权码。是这样吗?

如果是这样,在使用 hybrid 流程时,我们应该使用什么作为 grant_type

【问题讨论】:

【参考方案1】:

response_typegrant_type 从 OAuth 2.0 规范建立的两个强制性参数。因此 OpenID Connect 是建立在 OAuth 2.0 之上的,这两个参数也在 OpenID Connect 中使用。

response_type 用于授权端点。此参数定义授权响应必须包含在其响应中的内容。例如,code 在使用授权码授予时(类似 OpenID Connect 中的授权码流)。

另一方面,

grant_type 用于令牌端点。它定义了用于令牌请求的 grant。例如,authorization_code 是用于授权码授权的授权(类似 OpenID Connect 中的授权码流)。

对于混合流,response_type 扩展为具有多个段。这是通过OAuth 2.0 Multiple Response Type Encoding Practices 完成的。这使您可以使用 response_type,例如 response_type=id_token%20tokengrant_type 将与您使用授权码流相同。它将是code。这是在规范的hybrid token request

中定义的

【讨论】:

以上是关于OAuth2.0/OIDC 中的 grant_type 与 response_type的主要内容,如果未能解决你的问题,请参考以下文章

组件分享之后端组件——一款基于Golang的认证全套模块Casdoor

Facebook graph api 获取用户信息

iOS Xcode 中的 UIViewController 中的 UIView 中的 UITableView

如何用ruby中的数组中的元素替换字符串中的单词?

如何将视图中的 javascript 代码中的对象列表传递给控制器​​中的操作方法

如何从账户 A 中的 Lambda(VPC 中的 Lambda)调用账户 B 中的 AWS Lambda 函数(VPC 中的这个 Lambda)