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_code
和password
之间有什么不同。如果还有什么像自定义值,我们可以使用grant_type
吗?
对不起,我原来的答案不正确,所以我编辑了它并包含了authorization_code
信息。【参考方案2】:
在 OAuth 2.0 中,术语“授权类型”是指应用程序获取访问令牌的方式。 OAuth 2.0 定义了几种授权类型,包括授权代码流。 OAuth 2.0 扩展还可以定义新的授权类型。
【讨论】:
以上是关于OAuth 2身份验证中grant_type参数的目的是啥的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Angular 2 进行 oAuth2 基本身份验证?
在基于 OAuth2 的身份验证中,状态参数可以防止啥样的 CSRF 攻击?