OAuth 2身份验证中grant_type参数的目的是啥

Posted

技术标签:

【中文标题】OAuth 2身份验证中grant_type参数的目的是啥【英文标题】:What is the purpose of grant_type parameter in OAuth 2 AuthenticationOAuth 2身份验证中grant_type参数的目的是什么 【发布时间】:2017-12-16 17:45:21 【问题描述】:

我在 Lumen 微框架中使用 OAuth 2 身份验证。现在我使用grant_type 值是password。它抛出unsupported_grant_type,如果我使用不同的东西。我想知道使用grant_type的目的是password

【问题讨论】:

【参考方案1】:

OAuth2 RFC 需要 grant_type URL 参数用于 /token 端点,该端点交换真实令牌的授权。所以 OAuth2 服务器知道您发送给它的内容。您正在使用Resource Owner Password Credentials Grant,因此您必须使用值password 指定它。

来自 OAuth2 RFC:

授权授予是代表资源的凭证 所有者使用的授权(访问其受保护的资源) 客户端获取访问令牌。

grant_type=password 表示您正在向/token 端点发送用户名和密码。如果您使用Authorization Code Grant 流,则可以使用值authorization_code。但是您不会发送用户名+密码对,而是在用户身份验证后从 OAuth2 服务器收到的代码。该代码是任意字符串 - 不是人类可读的。它很好地显示在 RFC 的工作流程图中。

【讨论】:

感谢您的回答。我也想知道authorization_codepassword 之间有什么不同。如果还有什么像自定义值,我们可以使用grant_type吗? 对不起,我原来的答案不正确,所以我编辑了它并包含了authorization_code 信息。【参考方案2】:

在 OAuth 2.0 中,术语“授权类型”是指应用程序获取访问令牌的方式。 OAuth 2.0 定义了几种授权类型,包括授权代码流。 OAuth 2.0 扩展还可以定义新的授权类型。

【讨论】:

以上是关于OAuth 2身份验证中grant_type参数的目的是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Angular 2 进行 oAuth2 基本身份验证?

Salesforce OAuth 身份验证错误请求错误

OAuth2:使用电子邮件而不是用户名进行身份验证

在基于 OAuth2 的身份验证中,状态参数可以防止啥样的 CSRF 攻击?

oauth2 错误 AADSTS90014:请求正文必须包含以下参数:“grant_type”

具有多个grant_type的Spring Oauth2授权服务器用户信息端点不起作用